目次

Slurm

概要

プログラム

使い方

ジョブの投入

ジョブの確認

ジョブ制御

インストール方法

* ここでは、Ubuntu 16.04 ベースで、ソースからコンパイルする方法を紹介する。

  1. 認証システム munge をインストールする。
    $ sudo apt-get install libmunge-dev libmunge2 munge
    • 通常はインストール時に認証鍵が生成されるが、されない場合は以下のコマンドをマスターノードでのみ行う (マスターノードの認証鍵を計算機ノードが参照するため)。
      $ sudo create-munge-key
  2. インストール時にスタートアップの問題で失敗するので、修正する。
    $ sudo systemctl edit --system --full munge
    1. ExecStart=/usr/sbin/mungedExecStart=/usr/sbin/munged --syslog にする。
    2. 再度インストールする。
      $ sudo apt-get install -f
  3. slurm を https://www.schedmd.com/downloads.php からダウンロードする。
    • ここでは、SLURM-17.02.1-2.TAR.BZ2 をダウンロードする。
    • ダウンロードしたファイルは /tmp にあるものとする。
  4. 展開する。
    $ cd /tmp
    $ tar axvf slurm-17.02.1-2.tar.gz
  5. インストールする。
    $ cd slurm-17.02-1.2
    $ ./configure
    $ make -j 4
    $ sudo make install
  6. 設定ファイルをコピーする。
    $ sudo cp etc/slurm.conf.example /usr/local/etc/slurm.conf
  7. 設定ファイルを編集する。
    • 詳しくはシステムの設定を参照
  8. 必要なディレクトリを作成する。
    $ sudo mkdir -p /var/spool/slurm/ctld
    $ sudo mkdir -p /var/spool/slurm/d
    • slurm.conf.example をベースに設定ファイルを作成した場合は、fatal: _create_clustername_file: failed to create file /var/spool… というエラーが出るため、この作業が必要である。slurmctld が起動できないのは、このディレクトリがなく、このディレクトリ以下にファイルを作成できないためである。
    • 設定を容易に行う別の方法として、doc/html/configurator.easy.html を用いる方法があり、こちらで設定ファイルを作成した場合は、StateSaveLocationSlurmdSpoolDir が既に存在しているディレクトリを指しているため、このエラーは起こらない。
  9. 自動起動するようにする。
    • マスターノード (マスターノードで計算させない場合は slurmd.service の行は不要)
      $ sudo cp etc/slurmctld.service /etc/systemd/system
      $ sudo cp etc/slurmd.service /etc/systemd/system
      $ sudo systemctl enable slurmctld.service
      $ sudo systemctl enable slurmd.service
    • 計算ノード
      $ sudo cp etc/slurmd.service /etc/systemd/system
      $ sudo systemctl enable slurmd.service
  10. サービスを起動する。
    • マスターノード (マスターノードで計算させない場合は slurmd.service の行は不要)
      $ sudo systemctl start  slurmctld.service
      $ sudo systemctl start  slurmd.service
    • 計算ノード
      $ sudo systemctl start  slurmd.service
  11. 起動しているかを確認する。
    • マスターノード (マスターノードで計算させない場合は slurmd.service の行は不要)
      $ sudo systemctl status slurmctld.service
      $ sudo systemctl status slurmd.service
    • 計算ノード
      $ sudo systemctl status slurmd.service
  12. ジョブを投入してテストする。
    $ srun -l sleep 60 &
    $ srun -l sleep 60 &
    $ srun -l sleep 60 &
    $ srun -l sleep 60 &
    $ srun -l sleep 60 &
    $ squeue
    JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
       29       ALL    sleep mumeiyam PD       0:00      1 (Resources)
       25       ALL    sleep mumeiyam  R       0:05      1 master
       26       ALL    sleep mumeiyam  R       0:04      1 master
       27       ALL    sleep mumeiyam  R       0:04      1 master
       28       ALL    sleep mumeiyam  R       0:03      1 master

システムの設定

一般マシン

GPU マシン

トラブルシューティング

"error: we don't have select plugin type 101" というエラー、あるいはジョブが終了しても "CG" というステータスのままフリーズ

他のノードに計算が流れない

ノードの状態が "drain" のままでジョブが実行されない

"sinfo -N" でノードがダウンした状態になる

起動しない

参考サイト

導入方法