SnakemakeでTUTクラスタを利用する方法

makeで疲弊している人はSnakemakeを使うべき。Snakemakeは便利なワークフロー管理ツールです。

うちの大学には格安なクラスタがあります。Snakemakeは各タスクをクラスタのジョブとして実行する機能を持っているので、それを使ってTUTクラスタを使うための設定ファイルを公開しています。

github.com

ほぼ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のよさげなプロファイルは公開されていますね)