Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【HTCondor】投稿するサブミットファイルの書き方例

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