サブミットファイルの例は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