SnakemakeでTUTクラスタを利用する方法
makeで疲弊している人はSnakemakeを使うべき。Snakemakeは便利なワークフロー管理ツールです。
うちの大学には格安なクラスタがあります。Snakemakeは各タスクをクラスタのジョブとして実行する機能を持っているので、それを使ってTUTクラスタを使うための設定ファイルを公開しています。
ほぼSnakemakeをpbsproで使うための設定ですが、一部TUTクラスタの仕様に合わせた設定にしてあります。以下の点を直せばたぶん他のpbspro環境でも使えます。
- testディレクトリの中のpbs-jobscript.shの中でexport PATHがしてある(ジョブ実行時のPATHが初期化されてしまうから)
- (test/cluster.jsonのqueueやoptにコンテナ環境を使うよう設定してある)
Snakemakeの使い方はここでは触れないので、公式ドキュメントを参考に。
設定ファイルの配置
これは配置するプロファイルの名前をpbsproにした場合の例です。
git clone https://github.com/elnikkis/snakemake-pbspro.git
使い方
cluster.jsonを作る(testディレクトリの中に例があります)。
そして、プロファイルを指定して実行する。
snakemake --profile pbspro --cluster-config cluster.json
テスト実行
testディレクトリの中のconfig.yamlのNを変えるとテスト用の並列タスクが増えるようなSnakefileが書いてあります。
snakemake --profile pbspro --cluster-config cluster.json
これを実行しながら、別シェルでqwatchとかqstatの結果を眺めているとfinal.outができあがるはずです。いろんなホスト(ノード)で実行されている!うれしい!Nを増やすともっとうれしさが上がる!すごい!
Q&A
Q 実行後にカレントディレクトリがpbsの出力ファイルだらけになる
A 少々出力ファイルだらけになっても、クラスタのファイルシステムは死なないので大丈夫では(経験談)。数万個?出すとたぶんやばい。出力ファイルがいらなかったら、pbspro/pbs-jobscript.shの設定値をいじったりしたら消せると思います。
わたしは ls *.o*
で確認した後 ls *.o* | xargs rm
で消してます。globがきつかったらfindでrmします。
Q pbsproとpbs-torqueって違うの?
A なんかリソースの指定コマンドとかが違うし、違うものなのでは。前のクラスタがそれだった気がする。(pbs-torqueのよさげなプロファイルは公開されていますね)