TSUBAME3.0の使い方
はじめに
この記事はもともと岡崎研究室の新メンバーに向けて内部Wikiに書いたものを少し編集し公開したものです。なのでグループやグループディスクが既に存在している前提で書かれていますが、所属可能なTSUBAMEグループがない場合は新しくグループを作る必要があります。また、この記事は初心者向けかつ研究室のメンバー向けに情報を絞って書かれています。より多くの機能を知るにはこの記事の最後に挙げられているような一次情報に当たってください。
アカウントの取得
まだTSUBAMEアカウントを持ってない場合は取得する必要があります。東工大の学生または職員であれば東工大ポータルにログインし、「TSUBAME ポータル」リンクから申請してください。 - 学生や職員でない場合はここを参考に取得してください。
なお、課金するにはグループに追加されている必要があります。アカウントの取得後、研究室などのグループに追加してもらってください。
.ssh/configの設定
自分が利用するMacbook等のクライアントの~/.ssh/config
に以下の設定をしておきましょう(下二行は設定しないと接続が切れる)。
Host tsubame User {your TokyoTech ID or TSUBAME ID} HostName login.t3.gsic.titech.ac.jp ServerAliveInterval 120 ServerAliveCountMax 30
ログイン
- TSUBAME ポータルにログインし、sshするために公開鍵を登録する
ssh tsubame
でログイン
これでログインノードにログインできました。
TSUBAMEの環境
ここでは、TSUBAMEのストレージとソフトウェアについて述べます。
ストレージ
ホームディレクトリの容量は25GBしかないので、グループディスクと呼ばれるストレージをグループごとに購入して使うことになります。グループのストレージへのパスを誰かに聞く必要があるでしょう。 基本的には全てこのディレクトリ下に保存したほうがいいと思います。
ソフトウェア
TSUBAMEでは、module
コマンドを使用することでコンパイラやアプリケーションの切り替えを行うことができます。
使えるmoduleを確認してみましょう。
module avail
python3をロードしてみましょう。
python --version module load python/3.6.5 python --version
他には、module list
で現在利用しているmoduleを確認したり、module unload {module name}
でunloadしたり、module purge
で初期化することなどができます。
ジョブ実行
ログインノードでは重い計算はできないので、計算ノードで行う必要があります。
計算ノードでジョブを実行する方法には
- インタラクティブ実行(qrsh
)
- バッチ実行(qsub
)
- 通常実行
- 予約実行
があります。また、計算ノードには資源タイプという概念があり目的に合わせて選ぶことになりますが、ざっくり言うと - GPUを1つ使いたい:q_node - GPUを4つ使いたい:f_node - CPUだけ使う:q_core - メモリをたくさん使う:f_node
あたりを選ぶといいです。詳しくは講習会のTSUBAME利用法スライドが参考になります。
インタラクティブ実行
普段のCLIのように対話的にプログラムを実行するには、qrsh
コマンドを使います。
qrsh -g {your-group-name} -l q_core=1 -l h_rt=00:30:00 -p -4
上記で使われているオプションを以下に示します。
オプション | 説明 |
---|---|
-g | TSUBAME3グループ名を指定します。指定しないとお試し実行になります。 |
-l [資源タイプ名]=[個数] | 資源タイプおよびその個数を指定します。 |
-l h_rt=[時間] | 時間を指定します。 |
-p [-5 | -4 | -3] | ジョブの実行優先度を指定します。 -3,-4を指定すると通常よりも高い課金係数が適用されます。-4は-5の2倍、-3は-5の4倍お金がかかります。 |
終了するときは普通にexit
してください。
バッチ実行
バッチ実行では、ジョブスクリプトを記述してそれをqsub
コマンドによって投入します。
ジョブスクリプトの作成
以下にジョブスクリプトの例を示します。なお、qsub
コマンドのオプションはqrsh
と同じですが、コマンドラインで指定することも、以下のようにスクリプトファイルの最初のコメントに書いておくこともできます。ただし-g
オプションだけはコマンドの引数として指定する必要があります。
#!/bin/sh # カレントディレクトリでジョブを実行する場合に指定 #$ -cwd # ノードのタイプと数を指定 #$ -l f_node=1 # 実行時間を指定 #$ -l h_rt=0:10:00 # ジョブ名(指定しない場合はスクリプトファイル名になる) #$ -N test # 標準出力ファイル名(指定しないとジョブの名前とIDを元に生成される) #$ -o test_job.out # 標準エラー出力ファイル名(同上) #$ -e test_job.err # メールを送信する条件を指定(a:中止時、b:開始時、e:終了時) #$ -m abe # 送信先メールアドレス #$ -M example@example.com # Moduleコマンドの初期化(必ず行うこと) . /etc/profile.d/modules.sh # CUDA&cuDNN環境の読込 module load cuda/9.0.176 module load cudnn/7.3 # プログラムの実行 python -c 'import this'
オプションについて詳しくはこちら
スクリプトの実行
上記のようなスクリプトをjob.shというファイル名で保存したとすると、ジョブは次のように実行できます。
qsub -g {your-group-name} -p -4 job.sh
ジョブの確認や削除
- 確認:
qstat
- 削除:
qdel {job-ID}
予約実行について
上記のような通常実行では1つのジョブに最大24時間までしか指定することができません。それ以上使いたい場合には、予約実行をする必要があります。予約はTSUBAMEポータルから行い、与えられた予約IDを-ar
オプションで指定してqsub
することで実行できますが、ここでは詳しく触れません。利用の手引きを参考にしてください。
この記事で説明されていないこと
- アレイ実行
- 依存実行
- 並列化(複数ノードの使用)
Tips
スペック
TSUBAME
- ノード数:540
- GPU:Tesla P100 (NVlink)
詳しくは
- https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/
- https://www.t3.gsic.titech.ac.jp/hardware
各ノード
資源タイプ名 | CPUコア数 | メモリ (GB) | GPU 数 |
---|---|---|---|
f_node | 28 | 240 | 4 |
q_node | 7 | 60 | 1 |
q_core | 4 | 30 | 0 |
詳しくは https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/jobs/
利用料金
ポイント制。東工大の学内の人間が使う場合利用料金が75%オフになる。 - 購入代金:720,000ポイント / 5,000円 (学内の場合)
消費ポイントの計算式は以下の通り。
消費ポイント= 利用ノード数×資源タイプ係数×優先度係数×(0.7× 実際の実行時間(秒) + 0.1×指定した実行時間(秒))
- 例:f_nodeを1つ24時間指定した上で24時間優先度-4で使った場合、138,240ポイント消費する(金額に換算すると960円)
その他
- ログインノードはlogin0とlogin1のふたつあり、sshすると自動的にどちらかに振り分けられる(通常は気にする必要はない)
ドキュメント
- TSUBAME計算サービス(トップページ)
- 一番包括的なドキュメントページ
- TSUBAMEの運用状況もここに載ってる
- 計算ノードの混雑状況を確認したい
- ここを見て空きがない時は優先度を上げないと厳しい
- 利用の手引き
- このチュートリアルは半分くらいこのページの焼き直し
- 講習会ページ