search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

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

イントロ

ジョブスケジューラー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タスク以内ならそんなに気にならないとも。

随時更新予定

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
What you can do with signing up
1