サブミットファイルの例はHTcondorの公式ページに載ってる
Submitting a Job — HTCondor Manual 24.2.1 documentation
# Example 1
# Simple HTCondor submit description file
# Everything with a leading # is a comment
executable = myexe
arguments = SomeArgument
output = outputfile
error = errorfile
log = myexe.log
request_cpus = 1
request_memory = 1024M
request_disk = 10240K
should_transfer_files = yes
when_to_transfer_output = on_exit
queue
- executable に実行ファイルを書く、相対パスでも絶対パスでも大丈夫なはず
- arguments は実行ファイルにオプションとか引数がある場合は、こっちに書く
- outputは実行したときの標準出力がここにまとめられる
- errorは実行したときの標準エラーがここにまとめられる
- logは実行時のログが残る、いつからいつまで走っていたか、どのnodeで走っていたか、どういうエラーがholdになったか、メモリやディスクの使用率など
- request_cpus request_memory request_disk は使用するcpuやメモリーサイズなどが選べる、その条件に見合ったnodeがなければジョブは走らない
- 自分はcpuとmemoryはよく指定するけど、diskは指定したことない
- should_transfer_files when_to_transfer_output は、計算ノードのホームディレクトリが共有されてないときとかに、計算結果や入力ファイルをマスターノードから転送して走らせる設定
- 自分でもこれを使おうとしたことはあるけどうまくできなかった
- queue はジョブを投げるコマンド、これが2つあると2回投げる
arguments = setting1
queue
arguments = setting2
queue
みたいにする
これ以外に便利なものとしては
Universe = vanilla
他にlocalとかあるけど、とりあえずvanillaで良いと思う
それぞれの違いは
Choosing an HTCondor Universe — HTCondor Manual 24.2.1 documentation
他に複数のジョブを投げる場合に、outputとerrorを分離したいときは以下のようにすると良い
Executable = hello.py
Output = OUTPUT/hello.out.$(Cluster).$(Process).txt
Error = OUTPUT/hello.error.$(Cluster).$(Process).txt
Log = OUTPUT/hello.log.$(Cluster).$(Process).txt
Arguments =
Queue
getenv=True
としておくと、実行しているターミナルの環境変数などがジョブに渡されるので便利
とりあえず書いておくと良い
ただ、新しいHTCondorでこの設定は使えなくなったとどこかでみた・・・ デバッグするときに問題の切り分けがしにくくなるとか
condor_submit — HTCondor Manual 24.2.1 documentation