PCクラスタの使い方
ノードとストレージ情報
crabがログインノード兼ファイルサーバ。クラスタへログインする際はcrabが入り口となる。演算ノードへログインすることはほとんどなく、ほとんどの作業をcrab上で行う。crabはメモリ容量大きめ(512GB)なのでデータ解析にも使える。また、Jupyterが常時稼働しており研究室HPのトップページのリンクからとべる。
crabを含めて、crabのネットワークに接続されている演算ノードのスペックは以下の通り。
hostname | CPUコア数 | メモリ容量 | GPU | 主な用途 |
---|---|---|---|---|
crab | 64 | 512 GB | なし | データ解析や機械学習(Jupyter) |
n1 | 64 | 64 GB | Titan(Pascal) 10基 | シミュレーション |
n2 | 64 | 64 GB | Titan(Pascal) 10基 | シミュレーション |
n3 | 64 | 64 GB | GTX1080Ti 10基 | シミュレーション |
n4 | 64 | 64 GB | GTX1080Ti 10基 | シミュレーション |
n5 | 32 | 64 GB | GTX2080Ti 10基 | シミュレーション |
m1 | 28 | 512 GB | Quadro RTX8000 2基 | データ解析や機械学習(Jupyter) |
m2 | 14 | 64 GB | A5000 1基 | データ解析や機械学習(Jupyter) |
crabにマウントされているストレージはRAIDで冗長化されている。全て演算ノードとNFSで共有されている。
mount point | 容量 | 主な用途 |
---|---|---|
/home | 73 TB (RAID1) | ホームディレクトリ |
/data | 117 TB (RAID10) | シミュレーションとデータ解析 |
/data2 | 100 TB (RAID10) | シミュレーションとデータ解析 |
slurmへのジョブの投入方法
流れているジョブの確認
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
115 all isrest nakayama R 1-22:49:43 1 n3
125 all isrest_t yasu R 1-00:09:45 1 n2
ジョブの投入
$ sbatch run.sh
ノードを指定してジョブを投入
$ sbatch -w n4 run.sh
更に、GPU枚数を指定してジョブを投入
$ sbatch --gres=gpu:2080:1 -w n5 run.sh
ジョブのキャンセル (JOBIDを指定する。ここでは127とする)
$ scancel 127
依存関係のあるジョブの投入。例えばJOB_ID=54が終わった後で実行されるべきジョブの投入 (chain jobと呼ばれる)
$ sbatch -w n1 --dependency=afterok:54 run.sh
ジョブスクリプトrun.shの例
#!/bin/bash
#SBATCH -p all
#SBATCH -J run # job name
#SBATCH -n 1 # num of total mpi processes
#SBATCH -c 1 # num of threads per mpi processes
#SBATCH -o run.log
# set GPU ID if needed
# export CUDA_VISIBLE_DEVICES="0"
# perform production with OpenMM
namd3 +devices 0 +p 2 run.sh
slurmのジョブ投入におけるオプションについては以下が詳しい
初期設定
アカウントの作成
クラスタの管理者(松永)へアカウント名を伝えて、アカウントを作成してもらう。アカウント名はローカルマシンで使っているものと一緒であるのが望ましい。
ログインノードのIPアドレスを登録
ローカルマシンへログインノードであるcrabと、m1のIPアドレスを登録する。
$ sudo vim /etc/hosts
# IP情報は別途提供する
クラスタへログインする
# on local machine
$ ssh crab
# アカウント名を指定する場合は ssh -l username crab
# 初期パスワードは別途提供する
初期パスワードを変更する
# on crab
$ passwd
# 初期パスワードの入力
# 新パスワードの入力
SSH公開鍵認証の設定をする
パスワード認証はセキュアではないので、ローカルマシンとcrabとで公開鍵認証が行えるように設定を行う。 まず、ローカルマシン上で公開鍵・秘密鍵を作成する。ローカルマシンとcrabの認証に使う
# on local machine
$ ssh-keygen -t rsa
パスワード設定を求められたら入力する。ファイルのパスはそのままでリターン
crab上でも作っておく。これはcrabと計算ノード(n1〜)の認証に使うため
$ ssh -l username crab
$ ssh-keygen -t rsa
今度はパスワード設定を求められたら空のままリターン。ファイルのパスはそのままでリターン
ローカルマシンに戻って、ローカルマシンの公開鍵をcrabへ登録する
# on local machine
$ scp ~/.ssh/id_rsa.pub username@crab:.ssh/authorized_keys
今度はパスワード設定を求められたら空のままリターン。ファイルのパスはそのままでリターン
ややこしいが、今度はcrabの公開鍵を同じ場所へ登録する。homeを計算ノード(n1〜)と共有しているため
# on local machine
$ ssh -l username crab
# on crab
$ cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ローカルマシンに戻って、crabへのログインに公開鍵認証できるか試してみる
# on local machine
# SSHエージェントへ秘密鍵を登録する
$ ssh-add ~/.ssh/id_rsa
$ ssh -l username crab
crabから計算ノードへも公開鍵認証できるか試してみる
# on crab
$ ssh n1