現在利用可能なスーパーコンピュータとその利用法について説明する.
| 所属/施設 | システム名 + ノード種別 | CPU | メモリ | GPU |
|---|---|---|---|---|
| 物性研 SYSTEM B otaka | CPUノード | AMD EPYC 7702(64コア×2) | 256 GB | なし |
| Fatノード | Intel Xeon Platinum 8280(28コア×4) | 3 TB | なし | |
| 物性研 SYSTEM C kugui | CPUノード | AMD EPYC 7763(64コア×2) | 256 GB | なし |
| ACCノード | AMD EPYC 7763(64コア) | 256 GB | NVIDIA A100 GPU(40 GB×4) | |
| 情報基盤センター MIYABI(準備中) | Miyabi-C ノード | Intel Xeon Max 9480(56コア×2) | 128 GiB | なし |
| Miyabi-G ノード | NVIDIA Grace CPU(72コア) | 120 GB | NVIDIA Hopper H100 GPU(96 GB)(使い方) |
スーパーコンピュータは多数の計算ノード(Compute Node)で構成され,ログインノード(Login Node)と実行ノード(Compute Node) の2種類がある. ログインノードからジョブスケジューラにバッチを投入し,ジョブスケジューラが計算を実行ノードに割り当てる.
- シェル操作,スクリプト作成,ジョブ送信(ジョブスケジューラ操作),データ送受信などを行う
- 多くの利用者が同時に利用するので,CPUやメモリを独占するような計算は行わない---当局から厳しい指導が入る可能性
- ジョブスケジューラ(例:Slurm)を通して実際の計算を行う
- 計算時間や使用ノード数はジョブスケジューラで制御される
- 基本的にユーザがsshログインなどすることはない
スーパーコンピュータでいうジョブとは,ユーザーが実行したい計算処理やシミュレーションを,ジョブスケジューラに投入する単位である.
ジョブは,計算機上で直接実行するのではなく,ジョブスケジューラを介して実行ノードに割り当てられる.これにより,多数の利用者が同時にシステムを利用しても,資源の競合を避けて効率的に計算を行うことができる.
ジョブスケジューラはジョブの指定に応じて複数のノードを並列動作させるなども行う.例えばMiyabi-Gは96GBメモリのGPU1枚しか持たないので,よりGPUメモリを必要とする計算をする際はその分のノードを並列して計算する.
ジョブの情報はジョブスクリプトというファイルに書き,それをジョブ投入コマンドでジョブスケジューラに投入する.
ジョブ投入コマンドはシステムによって異なるので,各システムのマニュアルを参照すること.
- 実行するプログラムやスクリプトのパス
- どの計算プログラムを実行するかを指定する.
- 例:
./my_simulation.x input.dat
- 入力ファイルやデータのパス
- 計算に必要なデータや設定ファイルの場所を指定する.
- 出力ファイルの保存先
- 計算結果やログをどこに書き出すかを指定する.
- 計算前の環境設定
- モジュールのロードや環境変数の設定など.
- 例:
module load gcc/12.2.0
- 必要に応じた前処理や後処理
- データの整形や計算後の整理などもジョブスクリプトに含められる.
- 計算規模の見積もり
- 使用するノード数、CPUコア数、メモリ量、GPUの有無、計算時間などを適切に見積もる必要がある.
- 見積もりが不正確だと,ジョブが長時間待たされたり,途中で強制終了されることがある.
- ジョブ実行ではノード種別・ノード数・稼働時間に応じてポイントを消費する.ポイントを使い切ると研究室全体でスパコンを使えなくなるため,必要最小限の構成でジョブを実行すること.
- 並列計算の管理
- MPIやOpenMPなどの並列化方式に応じて,プロセス数やスレッド数を設定する必要がある.
- ログ管理
- 標準出力や標準エラー出力のファイル名を設定し,計算結果やエラー内容を追跡できるようにする.
- インタラクティブノードを使うと,計算ノードと同じ環境で対話的にデバッグできる
それぞれのシステムの手順を参照すること
- 物性研
- [情報基盤センター]
※ssh-keygenは既存の鍵(githubとか研究室サーバとか)を上書きする場合があるので,.ssh/id_rsa_ohtakaのようにログイン先ごとに別の鍵を作成すること.
ssh アカウント名@ohtaka.issp.u-tokyo.ac.jp -i ~/.ssh/authorized_keys
で接続できるのだが,
ssh ohtakaのようにして,いちいちユーザ名や接続先ipアドレスを打たなくてもssh接続できるようにする方法を説明する.
-
ssh-agentを起動
eval "$(ssh-agent -s)"
-
秘密鍵をエージェントに登録(パスフレーズを一度だけ入力)
ssh-add ~/.ssh/id_rsa_otaka -
~/.ssh/configを設定Host ohtaka HostName ohtaka.issp.u-tokyo.ac.jp User username IdentityFile ~/.ssh/id_rsa_ohtaka AddKeysToAgent yes -
永続化する場合(ログイン時に自動で有効に)
~/.bashrcに以下を追記:eval "$(ssh-agent -s)" > /dev/null ssh-add ~/.ssh/id_rsa < /dev/null
-
鍵をキーチェーンに登録
ssh-add --apple-use-keychain ~/.ssh/id_rsa_ohtaka -
~/.ssh/configに設定 linuxの場合と同じ -
結果 一度パスフレーズを入力すれば、次回以降はmacOSキーチェーンが自動で認証。
-
ssh-agentサービスを自動起動
Set-Service ssh-agent -StartupType Automatic Start-Service ssh-agent
-
鍵を登録
ssh-add $env:USERPROFILE\.ssh\id_rsa
-
~/.ssh/configに設定 linuxの場合と同じ
→ 一度登録すれば、以後はパスフレーズ不要。
- Pageantを起動
- 秘密鍵(
.ppk形式)を追加してパスフレーズを入力 - 常駐中は自動的に認証される