8
4

More than 3 years have passed since last update.

sbatch・srunオプション頑張って網羅

Last updated at Posted at 2020-05-02

イントロ

ジョブスケジューラーslurmは使ったことはございますか?

GPUのジョブ管理に非常に便利なのですが、問題点が非常に多いツールです。

  • 公式ドキュメントがうんち (見にくい)
  • ユーザグループの質問のページがうんち (見にくい)
  • 英語でもうんち (リソース不足)

まあ、大半の方はインストール等を自分ですることはないので、ユーザに関係あるsbatchやsrunをちょっと見ていきたいと思います。

基本だけ述べておくと

sbatch test.sh
srun python test.py

みたいな感じで流すとslurmのジョブのスケジューラーに乗ることになります。
ただ、公式ページにいけばわかりますが(https://slurm.schedmd.com/sbatch.html)、何をそんなに書くことがあるんだってぐらい非常に長いページになっています。

このページの大半はオプションになっていて、非常に多くのオプションがあることがわかります。

これらの中には気づかない宝があるかもしれない。
なので、ちょっとずつですが試して例もつけられたら、つけていこうと思います。

注意点

  • USER名など一部人手で変更しております。

本編

-a --array=<indexes>

ジョブIDに任意のサブの名前をつけることができます。

sbatch --array=10 test.sh

JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
827_10      pc1  test.sh     user  R       0:05      1 pc1

"-"をつけるとこれらを繰り返すことになります。

sbatch --array=1-10 test.sh

JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
828_[3-10]      pc1  test.sh     user PD       0:00      1 (Resources)
828_1      pc1  test.sh     user  R       0:00      1 pc1
828_2      pc1  test.sh     user  R       0:01      1 pc1

-A --acount=<account>

アカウント名をつけることができますが、何に使うんでしょうか...?

通常使用の場合
sbatch test.sh

$ scontrol show job 886
JobId=886 JobName=test.sh
   UserId=user(****) GroupId=group1(****) MCS_label=N/A
   Priority=********** Nice=0 Account=(null) QOS=(null)
   JobState=RUNNING Reason=None Dependency=(null)
   (以下略)

使用した場合
$ sbatch --account=super test.sh

$ scontrol show job 885
JobId=885 JobName=test.sh
   UserId=user(****) GroupId=group1(****) MCS_label=N/A
   Priority=********** Nice=0 Account=super QOS=(null)
   JobState=RUNNING Reason=None Dependency=(null)
   (以下略)

(※ 「*」は数字が書いてありました。伏せています。)

Accountの項目につけた名前が出てきました。

--acctg-freq

投げるjobをどの頻度で監視するかを事前に決めることができます。
これはslurm.conf(ユーザは基本見れない設定ファイル)のJobAcctGatherFrequencyの値よりも優先されます。

--acctg-freq=<datatype>=<interval>となっているように<datatype>はtaskenergynetworkfilesystemの四種類で、<interval>は秒で指定します。

sbatch --acctg-freq=task=20 test.sh
sbatch --acctg-freq=filesystem=20 test.sh

あんまり小さい値を指定するとパフォーマンスに影響します。
デフォルトの30秒は10,000タスク以内ならそんなに気にならないとも。

随時更新予定

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4