クリーンUbuntuからGROMACSのGPU計算へ:ComputeBuilder AIで構築からSlurmまで

DGX Spark上のComputeBuilder AIに日本語で相談し、RTX PRO 6000 Blackwellのドライバー、CUDA、GROMACS、Slurmを構築。10個のプロンプト、実測結果、AIと内蔵手順の役割を動画とともに紹介します。

Share
ComputeBuilder AI:日本語でGROMACSのGPU計算環境を構築。DGX SparkとRTX PRO 6000 Blackwell。

ComputeBuilder AI / 実機での構築記録

日本語で相談し、内蔵手順で環境を作り、GPU計算とジョブ管理まで確認する。RTX PRO 6000 Blackwellを使った、ComputeBuilder AIの初回構築記録です。

ドライバー、コンパイラー、CUDA、計算ソフト、ジョブスケジューラー。GPUワークステーションで研究を始める前には、いくつもの準備があります。必要なものを調べ、互換性を考え、コマンドを実行し、正しく動いたかを確認する。この最初のハードルを下げるためのソフトウェアがComputeBuilder AIです。

本稿では、DGX Spark上のローカルLLMからSSHで別のワークステーションを操作し、クリーンなUbuntuにGROMACSのGPU計算環境を構築した流れを紹介します。最後にSlurmへ2つのジョブを投入し、GPUを順番に使って両方が正常終了するところまで確認しました。

AIが担当することと、内蔵手順が担当すること

何も決めずに毎回すべての導入方法をLLMに考えさせると、情報の検索や同じ確認を繰り返す時間が増えます。そこで、あらかじめ目的が分かっている定型作業は手順を内蔵する方式にしました。

担当役割
利用者日本語で目的を伝え、説明を読み、進める範囲を決める
ローカルLLM依頼を理解し、必要な手順を選び、結果を説明する
内蔵手順対応条件の確認、パッケージ導入、設定、計算、結果の検査を行う

このため、動画を「LLMが未知のインストール方法を、その場ですべて発明する実演」とは位置づけていません。対象を確認した手順を使って、利用者の相談から動作確認までをつなぐ実演です。未対応の構成については追加調査が必要です。

リハーサルでは不足を修正し、その後OSを基準のクリーン状態へ戻しました。本番では製品ファイルのハッシュを固定し、利用者役の10個のプロンプトから最後まで実行しています。別のAIが途中でSSHコマンドを挟んで直す運用は本番に含めていません。プロンプトは試験用ハーネスから入力しており、人間が実際にキーを打つ場面の収録ではありません。

今回のマシンと、GROMACSを選んだ理由

項目構成
操作側DGX Spark / ComputeBuilder AI / Qwen3.8-Flash-Next / Codex CLI
計算側GPURTX PRO 6000 Blackwell Max-Q Workstation Edition ×1(96GB)
CPUAMD Ryzen Threadripper PRO 7965WX(24コア48スレッド)
メモリ512GB構成(OS認識は約503GiB)
OSUbuntu 24.04 LTS / x86_64 / 展示専用の独立した起動環境

今回の主題は、混合精度を使う分子動力学ソフトウェアGROMACSです。単一GPUの構成に合わせ、CUDAで計算するビルドを用意します。特定の科学的研究結果を得ることではなく、研究用ソフトウェアを構築し、GPU実行まで確認できることを示します。

DGX Spark上のComputeBuilder AIからSSHで計算用ワークステーションを操作します。
DGX Spark上のComputeBuilder AIからSSHで計算用ワークステーションを操作します。 本番ログを読みやすく再構成した映像から。

開始前に用意しているもの

「クリーンOS」は、SSH、ネットワーク、Pythonなどの基礎だけが入ったUbuntuを指します。NVIDIA計算ドライバー、CUDA Toolkit、GROMACS、Slurmは未導入です。OSの新規導入、SSH鍵と接続先名の登録、sudo権限の設定は事前準備です。この基準OSでは、競合するNouveauドライバーの無効化も事前に行っています。再起動不要という結果は、この開始条件でのものです。

元のOSを残し、Btrfsの別サブボリュームに展示用OSを作りました。基準スナップショットへ戻す操作は、以下の10個のプロンプトには含めていません。クリーンな状態から導入する記録と、構築済み環境で行う展示当日の短い体験は分けて紹介します。

ドライバーやSlurmの導入には管理者権限が必要なので、この実演では上級者モードを使用します。接続先ユーザーに権限がなければ、AIもその権限を勝手に得ることはできません。

ssh arc@arc-develop
computebuilder-ai --advanced --gromacs-demo

以降はComputeBuilder AIへ入力する日本語の例です。接続先名は実演環境のものなので、別の環境でそのまま使う前に、対象が内蔵手順の対応条件に合うかを確認してください。

1. まずは説明だけを依頼する

dl@pro6k-cleanでGROMACSのGPU計算ができる環境を作りたいです。まず現在の構成とソフトウェアを確認し、内蔵手順で何をどの順番に導入するか説明してください。まだインストールはしないでください。

対応するOSとGPUか、導入済みのソフトは何か、必要な工程は何かを確認します。「まだインストールしない」と指定したこの段階では、変更を行うツールは呼ばれていません。

このプロンプトに対する実際の回答(全文)
## 現在の構成

| 項目 | 状態 |
|------|------|
| OS | Ubuntu 24.04.5 LTS x86_64 ✅ 対応 |
| GPU | RTX PRO 6000 Blackwell(PCI 0x2bb4、compute capability 12.0)× 1枚 |
| CPU / RAM / ディスク | 48スレッド / 503 GiB / 空き 843 GiB |
| NVIDIA ドライバー | **未導入**(580.178.04 open が必要) |
| CUDA Toolkit 13.0 | **未導入** |
| GROMACS 2026.3 | **未導入**(バイナリなし) |
| Slurm (slurm-wlm) | **未導入** |
| HPC SDK | 不要(本手順では GCC + CMake + nvcc で構築) |

---

## 内蔵手順の順序と目的

| 順 | step | 内容 |
|----|------|------|
| 1 | **driver** | NVIDIA 580.178.04 open をAPTで導入 |
| 2 | **activate_driver** | 再起動なしでドライバーを有効化 |
| 3 | **cuda_toolkit** | CUDA Toolkit 13.0(nvcc V13.0.88)+ GCC/CMake/FFTW 等のビルド依存を導入 |
| 4 | **gromacs_source** | GROMACS 2026.3 ソースを取得・SHA256確認 |
| 5 | **gromacs_build** | Ninja + `--parallel 16` でビルド、`~/.local/opt/gromacs-2026.3-cuda` にインストール |
| 6 | **gromacs_test** | benchMEM(MPINAT公開、約8.2万原子、CC BY 4.0)で実GPU実行・Performance確認 |
| 7 | **slurm** | Slurm 23.11.x(munge / slurmctld / slurmd)を単一ノード gpumain パーティションで設定 |
| 8 | **slurm_test** | 各1GPU要求の2ジョブを sbatch 投入し、1つ RUNNING → 他 PENDING → 両方 COMPLETED/0:0 を検証 |

---

## ビルドの要点

- 精度: **mixed**(混合精度)
- GPU: CUDA(cuFFT)、CPU SIMD: AVX2_256
- 並列: thread-MPI(GMX_MPI=OFF)+ OpenMP(GMX_OPENMP=ON)— 単一ノードのため外部MPI不要
- インストール先: `/home/dl/.local/opt/gromacs-2026.3-cuda`
- 環境読み込み: `source ~/.local/opt/gromacs-2026.3-cuda/bin/GMXRC`

---

## Slurm のポイント

- ConstrainCores / ConstrainDevices = yes(cgroup v2)
- ConstrainRAMSpace = **no**(スケジューラの割当管理のみ、メモリ強制制限ではない)
- 完了確認: `scontrol show job` と保存ログ(sacct は会計DB未設定のため使用しない)

---

すべて未導入の状態です。インストールを進める場合は、どの段階から実行するかお知らせください。

2. ドライバーを導入し、再起動なしで有効化する

説明された内蔵手順で、このサーバーに対応するNVIDIAドライバーをインストールしてください。続けて再起動せず有効にできるか試し、GPUの認識まで確認してください。再起動が必要なら実行せず理由を教えてください。

Blackwell向けに580系列のopen版を導入しました。続いてモジュールを読み込み、デバイスの準備を待ってnvidia-smiでGPUを確認しています。今回の環境では、起動識別情報が変わっていないこととGPU認識の両方で、再起動なしの有効化を確認しました。既存ドライバーが動作している別の環境でも必ず再起動不要という意味ではありません。

このプロンプトに対する実際の回答(全文)
## 完了しました

再起動なしでドライバー有効化とGPU認識を確認できました。

| 項目 | 結果 |
|------|------|
| パッケージ | nvidia-driver-580-open 580.178.04-0ubuntu0.24.04.1 |
| 有効化 | 再起動不要(modprobe でカーネルモジュールロード) |
| GPU | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition × 1 |
| ドライバーバージョン | 580.178.04 |
| Compute Capability | 12.0(sm_120) |
| 再起動 | 実施していません(boot_id 変化なし) |

**かかった時間**: driver ~130秒、activate_driver ~1.6秒

次の段階(cuda_toolkit 以降)を進める場合はお知らせください。
今回の開始条件では、再起動せずにドライバーを有効化できました。
今回の開始条件では、再起動せずにドライバーを有効化できました。 本番ログを読みやすく再構成した映像から。

3. GROMACSの要件を理解する

次にGROMACSをGPU向けにビルドしたいです。必要なコンパイラーやCUDA、ビルド手順を説明してください。HPC SDKや外部MPIも必要ですか。ここでは説明だけお願いします。

今回のビルドはGCC、CMake、CUDA Toolkit、FFTWを使います。1ノードでthread-MPIとOpenMPを使うため、外部MPIは必須ではありません。HPC SDKの導入手順も保持していますが、このGROMACS構成では導入しません。必要なものを選ぶことが目的です。

このプロンプトに対する実際の回答(全文)
## GROMACS 2026.3 GPU ビルドに必要なもの

### HPC SDK・外部MPIは不要です

単一ノード・thread-MPI構成のため、**HPC SDKも外部MPIも不要**です。cuda_toolkit の段階で GCC/G++ 13・CMake・FFTW3 等のビルド依存がまとめて導入されます。

### ビルド環境

| 項目 | 内容 |
|------|------|
| C/C++ コンパイラー | GCC/G++ 13(Ubuntu 24.04 標準) |
| CUDA コンパイラー | nvcc V13.0.88(CUDA Toolkit 13.0) |
| CMake | 3.28以上(cuda_toolkit で導入) |
| FFT | システムFFTW3(CPU側)、GPU FFTはcuFFT |
| ビルドジェネレーター | Ninja |
| インストール先 | `~/.local/opt/gromacs-2026.3-cuda` |

### 主要ビルド設定

| オプション | 値 | 意味 |
|------------|---|------|
| GMX_GPU | CUDA | GPU計算を有効化 |
| CMAKE_CUDA_ARCHITECTURES | 120 | RTX PRO 6000 の sm_120 向け |
| GMX_MPI | OFF | 単一ノード内 thread-MPI |
| GMX_OPENMP | ON | CPU側マルチスレッド |
| GMX_FFT_LIBRARY | fftw3 | CPU FFTはFFTW3 |
| GMX_SIMD | AVX2_256 | CPU SIMD命令 |
| 精度 | mixed(混合精度) | 単精度と同一ではない |

### 実行する手順(3段階)

1. **cuda_toolkit** — CUDA Toolkit 13.0 とビルド依存(GCC、CMake、FFTW3、Ninja等)を一括導入
2. **gromacs_source** — GROMACS 2026.3 ソース取得・SHA256確認
3. **gromacs_build** — `cmake --build --parallel 16` でビルド → `cmake --install` で `~/.local/opt/` へインストール

ビルド完了後、`source ~/.local/opt/gromacs-2026.3-cuda/bin/GMXRC` で環境を通します。

### 補足

- 複数ノードで動かす場合は外部MPI対応での再ビルドが必要ですが、今回の1ノード構成では不要です。
- 「混合精度」はCPU/GPUの担当分けではなく、数値精度の指定です。
- 所要時間はビルド実行後に実測をお伝えします。

実行のご指示があればお申し付けください。

回答の読み方:上記の実際の回答にある「cmake --build --parallel 16」はビルドディレクトリを省いた略記で、そのままコピーして実行するコマンドとしては不完全です。手動ならcmake --build BUILD --parallel 16、インストールならcmake --install BUILDのように、BUILDを実際のビルド先に置き換えます。今回実行された内蔵手順では具体的なディレクトリを渡しています。この説明上の不足は残課題として記録し、回答全文も改変せず掲載しています。

4. 開発環境を揃える

その構成で進めてください。まず内蔵手順でCUDA ToolkitとGROMACSのビルドに必要なGCC、CMake、ライブラリーをインストールし、バージョンを確認してください。

cuda-toolkit-13-0を指定し、ドライバーまで別の版へ入れ替えるcudaメタパッケージは使いません。コンパイラーとライブラリーの版も結果に含めます。新しいログインシェルではCUDAの環境設定を読み込み、既存シェルではsource /etc/profile.d/computebuilder-cuda.shで読み込めます。

このプロンプトに対する実際の回答(全文)
## 完了しました(約162秒)

CUDA Toolkit とビルドに必要なツール一式が導入され、正常終了(exit_code=0)です。

| ソフトウェア | バージョン |
|--------------|-----------|
| CUDA Toolkit | 13.0.3-1(パッケージ)/ **V13.0.88**(nvcc) |
| GCC | 13.3.0(Ubuntu 13.3.0-6ubuntu2~24.04.1) |
| CMake | 3.28.3 |
| FFTW3 | 3.3.10 |
| Ninja | 1.11.1 |

### 導入されたビルド依存

build-essential、cmake、ninja-build、libfftw3-dev、pkg-config、git

### 環境読み込み

```
source /etc/profile.d/computebuilder-cuda.sh
```

### 補足

- nvcc V13.0.88 は CUDA Toolkit 13.0 のコンパイラーです。ドライバーの CUDA 対応バージョンや GPU の Compute Capability 12.0(sm_120)とは別の概念です。
- HPC SDK は不要のままです。

---

次の段階は **gromacs_source**(ソース取得・SHA256確認)→ **gromacs_build**(ビルド)です。進めますか?

5. ソースと公開入力を取得する

内蔵手順でGROMACSの公式ソースと、動作確認に使う公開入力データを取得してください。入手元、バージョン、整合性の確認結果、入力データの出所を教えてください。

GROMACS 2026.3の公式配布アーカイブと公開benchMEM入力を取得し、SHA256を照合します。benchMEMは膜タンパク質と水を含む約82,000原子の入力です。出所はMax Planck Institute for Multidisciplinary Sciences、CC BY 4.0です。

このプロンプトに対する実際の回答(全文)
## 完了しました(約16秒)

正常終了(exit_code=0)です。

### GROMACS ソース

| 項目 | 内容 |
|------|------|
| バージョン | 2026.3 |
| 入手元 | `https://ftp.gromacs.org/gromacs/gromacs-2026.3.tar.gz`(公式FTP) |
| SHA256 | `1094b7bbc6a3960223827114626657110b40096cdf9598a727935fc84ebf8aa0` ✅ 一致 |
| キャッシュ再利用 | いいえ(新規取得) |

### ベンチマーク入力データ

| 項目 | 内容 |
|------|------|
| 名称 | benchMEM(膜タンパク質+水、約82,000原子) |
| データSHA256 | `3c1c8cd4f274d532f48c4668e1490d389486850d6b3b258dfad4581aa11380a4` ✅ 一致 |
| TPRファイルSHA256 | `5099268bf3a3d948c03b3b78432f29a2c5d4207b54d02e7e294f8138b587d473` |
| 出所 | Max Planck Institute for Multidisciplinary Sciences(Göttingen)、理論・計算生物物理学部門 |
| リンク | https://www.mpinat.mpg.de/grubmueller/bench |
| ライセンス | CC BY 4.0 |

これは公開されているベンチマークであり、自作の研究データや独自の科学的成果ではありません。

---

次の段階は **gromacs_build**(Ninja で `--parallel 16` ビルド)です。進めますか?

6. GPU向けにビルドする

取得したGROMACSを、このRTX PRO 6000 Blackwell向けに内蔵手順でGPUビルドしてください。完了まで確認し、どの実行ファイルを使うか教えてください。

CUDA、混合精度、thread-MPI、OpenMPを有効にし、BlackwellのCUDAアーキテクチャ120を対象にビルドします。FFTWはシステムの単精度ライブラリーを使います。完成したバイナリーのGPU対応と共有ライブラリー依存関係を確認します。

このプロンプトに対する実際の回答(全文)
## ビルド完了しました(約87秒)

正常終了(exit_code=0)です。

### 実行ファイル

```
/home/dl/.local/opt/gromacs-2026.3-cuda/bin/gmx
```

### 環境読み込み方法

```
source /home/dl/.local/opt/gromacs-2026.3-cuda/bin/GMXRC
```

### ビルド構成(gmx --version で確認済み)

| 項目 | 値 |
|------|---|
| GROMACS | 2026.3 |
| 精度 | mixed(混合精度) |
| MPI | thread-MPI(組み込み) |
| OpenMP | 有効(最大128スレッド) |
| GPU | CUDA |
| CUDA targets | **120**(sm_120 = RTX PRO 6000 Blackwell) |
| CUDA コンパイラー | nvcc V13.0.88 |
| CUDA driver / runtime | 13.0 / 13.0 |
| CPU SIMD | AVX2_256 |
| CPU FFT | fftw-3.3.10-sse2-avx |
| GPU FFT | cuFFT |
| C/C++ コンパイラー | GCC 13.3.0 |
| 外部MPI | 不使用(単一ノード) |
| バイナリ SHA256 | `492b1370ae604f558884206ec5cf939a848c36253af93c58d7a0ca4370db6310` |

---

次の段階は **gromacs_test**(benchMEM による実GPU実行・Performance確認)→ **slurm**(ジョブスケジューラ設定)→ **slurm_test** の順です。進めますか?
source ~/.local/opt/gromacs-2026.3-cuda/bin/GMXRC
gmx --version

7. Slurmの前にGPU計算を確かめる

内蔵手順で公開benchMEM入力を使うGPU計算を実行してください。終了しただけでなく、GROMACSが実際にGPUを使ったことも確認して結果を説明してください。

ドライバーがあること、GPU対応でビルドできたこと、実際にGPU計算したことは別です。GROMACSのログに加え、実行したプロセスIDがnvidia-smiの計算プロセスとして観測されたことを確認します。benchMEMの制約条件に合わせ、座標更新はCPU、非結合相互作用などはGPUで実行します。

このプロンプトに対する実際の回答(全文)
## GPU計算が完了しました(約16秒)

正常終了(exit_code=0, passed=true)です。

### 実行結果

| 項目 | 値 |
|------|---|
| 入力 | benchMEM(約82,000原子、膜タンパク質+水) |
| ステップ数 | 20,000 |
| Performance | **249.166 ns/day** |
| 実時間 | 15.9秒 |

### GPU使用の証拠

**1. プロセス監視による確認(nvidia-smi)**

実行中に以下のGPUプロセスを検出:

| PID | GPU UUID | 実行ファイル | VRAM |
|-----|----------|-------------|------|
| 28127 | GPU-cf9e9e02-...(RTX PRO 6000 Blackwell) | gmx | **608 MiB** |

ピークGPU使用率: 45%(20,000ステップの短時間実行のため)

**2. GROMACSログ内のGPUマーカー**

```
Using GPU 8x4 nonbonded short-range kernels
NBNxM GPU setup: super-cluster 2x2x2
 Launch PP GPU ops.        1    8      39801       0.342   11.477   2.5%
 PME GPU mesh              1    8      20001       0.595   19.948   4.3%
 Wait GPU NB local         1    8      20001       0.246    8.242   1.8%
 Wait GPU state copy       1    8      18000       3.116  104.556  22.5%
 Launch PME GPU ops.       1    8     160008       0.408   13.699   2.9%
```

NBNxM(非結合)カーネル、PMEメッシュ計算、GPU間の状態コピーなど、複数のGPUカーネルが実際に起動されていることが確認できます。

### まとめ

「終了した」だけでなく、プロセス監視でGPUメモリを占有する gmx プロセスが検出され、ログ上でも非結合計算・PME・GPU演算が明示的に実行されています。RTX PRO 6000 Blackwell が実際に計算に使われていることが確認できました。

---

次の段階は **slurm**(単一ノード gpumain パーティション設定)です。進めますか?

検証結果と回答の解釈を分ける:GPU使用を観測できたことは確認済みです。一方、回答にある「GPU間の状態コピー」という説明は、この1GPU構成のログからは支持されません。Wait GPU state copyはGPU間通信を証明する表示ではありません。また、観測期間中の最大GPU使用率が45%だった原因を「短時間実行のため」と断定する根拠もありません。この値はサンプリングした範囲の最大値であり、低い理由の特定には別の性能調査が必要です。これらは記事編集時の補足で、計算を成功させるために途中で操作を修正したものではありません。

8. Slurmで何が変わるのかを先に説明する

このサーバーで複数の計算をSlurmで管理したいです。GPUは1枚ですが、2つのジョブを入れた場合にどう動くか、必要な設定と確認手順を先に説明してください。まだインストールしないでください。

1GPUを要求するジョブが2つあれば、一方がRUNNINGの間に他方はPENDINGになります。GPUが空けば次が動きます。1枚のGPUを2枚あるように扱ったり、2つのジョブが同時に計算したと説明したりしません。

このプロンプトに対する実際の回答(全文)
## Slurm による単一GPU管理の仕組み

### 想定される動き

GPUが1枚のため、各1GPUを要求する2ジョブを投入すると:

1. **ジョブA** → RUNNING(GPUを専有して実行開始)
2. **ジョブB** → PENDING(GPU待ちで待機)
3. ジョブA完了 → COMPLETED/0:0
4. ジョブBが自動的にRUNNINGに移行 → COMPLETED/0:0

GPU共有(MPSやMIG)は設定しないため、同時実行にはなりません。順番に1つずつ処理されます。

### 必要な設定(slurm の段階で実施)

| 項目 | 内容 | 目的 |
|------|------|------|
| サービス | munge / slurmctld / slurmd | 認証・コントローラー・ノードデーモン |
| パーティション | gpumain | 計算ジョブの投入先 |
| GPUリソース | gres.conf: Name=gpu File=/dev/nvidia0 | 1基のGPUをスケジューラに認識させる |
| ノード定義 | Gres=gpu:1 | このノードがGPU×1を持つと宣言 |
| cgroup v2 | ConstrainCores=yes, ConstrainDevices=yes | CPUコアとGPUデバイスの割当を分離 |
| ConstrainRAMSpace | **no** | スケジューラがメモリを割当管理するが、cgroupで強制制限はしない |
| RealMemory | 検出RAM − 8192 MiB | OS予約分を除いた割当可能量 |
| 拓扑 | slurmd -C で自動検出 | CPU・メモリの実際の構成に基づく設定 |

### 検証手順(slurm_test の段階で実施)

各ジョブ: 1 GPU / 8 CPU / 8G メモリを要求

1. benchMEM で batch スクリプト(job.sh)を作成(内部で `srun gmx mdrun ...` を呼ぶ)
2. `sbatch --partition=gpumain --gres=gpu:1 --cpus-per-task=8 --mem=8G job.sh` を2回投入
3. `squeue` で1つが RUNNING、他が PENDING になることを確認
4. 完了後 `scontrol show job <JOBID>` で ExitCode=0:0 を確認
5. 保存ログで Performance 行を確認

### 注意点

- **sacct は使いません**。会計DBを設定しないため、完了確認は scontrol と保存ログで行います。
- sbatch はバッチスクリプト経由で srun を呼びます。gmx のコマンド引数を sbatch に直接は渡しません。
- `-ntmpi 1` は thread-MPI ランク数、`-ntomp 8` は OpenMP スレッド数です。

---

インストールのご指示があればお申し付けください。

9. 実機の資源量でSlurmを設定する

では内蔵手順でSlurmをインストールし、実際のCPU数、メモリ量、GPU1枚に合わせて設定してください。ノードとGPUを利用できる状態まで確認してください。

slurmd -CからCPUのトポロジーと実メモリ量を取得し、OS用に8GiB分を差し引きます。GPUをGRESとして1枚登録し、cgroupによるCPU・デバイスの制約を設定します。既存の別用途のSlurm設定があれば無条件で上書きしません。

このプロンプトに対する実際の回答(全文)
## 完了しました(約8秒)

正常終了(exit_code=0)で、ノードが利用可能な状態になっています。

### 検出・設定されたトポロジー

| 項目 | 値 |
|------|---|
| Slurm バージョン | 23.11.4 |
| ノード名 | pro6k-clean |
| CPUs | 48(1ソケット × 24コア × 2スレッド) |
| RealMemory | 507,061 MiB(検出 515,253 MiB − OS予約 8,192 MiB) |
| GPU | 1(/dev/nvidia0) |
| パーティション | **gpumain**(デフォルト) |
| cgroup デバイス制限 | ConstrainDevices=yes |

### ノード状態

```
sinfo → gpumain*  idle  gpu:1
```

`idle` は正常にアイドルでジョブを受け付けられる状態です。GPU×1がリソースとして認識されています。

### 稼働サービス

| サービス | 役割 |
|----------|------|
| munge | ノード間認証 |
| slurmctld | ジョブスケジューラ |
| slurmd | ノードワーカー |

---

最後の段階 **slurm_test**(1GPUの2ジョブを sbatch で投入し、1つ RUNNING → 他 PENDING → 両方 COMPLETED/0:0 を検証)が残っています。進めますか?

10. 2ジョブの待機と順次完了を確認する

内蔵手順でGPU1枚を要求するGROMACSジョブを2つSlurmへ投入してください。1つが実行中の間にもう1つが待機し、順番に両方正常終了することを、GPU使用とジョブ状態の記録で確認してください。

各ジョブは1GPU、8CPU、8GBメモリを要求します。Slurmの状態を継続的に観測し、片方が待機すること、両方のCOMPLETEDと終了コード0:0、実計算の時間が重ならないことを検証します。各ジョブでもGPUプロセスを観測します。

このプロンプトに対する実際の回答(全文)
## 完了しました(約93秒)

両ジョブが順番に正常終了し、すべての検証項目をパスしました(exit_code=0, passed=true)。

---

### ジョブ実行タイムライン

| | Job 1 | Job 2 |
|--|-------|-------|
| **状態遷移** | RUNNING → COMPLETED | PENDING(Job 1実行中待機) → RUNNING → COMPLETED |
| **ExitCode** | **0:0** ✅ | **0:0** ✅ |
| **開始 → 終了** | 10:41:10 → 10:41:43 | 10:42:10 → 10:42:42 |
| **ステップ数** | 50,000 | 50,000 |
| **Performance** | **280.634 ns/day** | **288.890 ns/day** |
| **実時間** | 32.9秒 | 32.1秒 |
| **割当** | cpu=8, mem=8G, node=1 | cpu=8, mem=8G, node=1 |
| **CUDA_VISIBLE_DEVICES** | 0 | 0 |

### 検証結果サマリー

| 検証項目 | 結果 |
|----------|------|
| 1つ実行中に他が PENDING | ✅ 観測済み |
| 同時 RUNNING は発生しない | ✅ 発生なし |
| 実行期間が重ならない(逐次実行) | ✅ 確認済み |
| Job 1 GPU使用 | ✅ PID 29311、VRAM 608 MiB、NBNxM/PME GPUカーネル起動 |
| Job 2 GPU使用 | ✅ PID 30258、VRAM 608 MiB、同様のGPUマーカー確認 |
| 両方 COMPLETED / ExitCode=0:0 | ✅ |

GPUは1枚のまま、Job 1 の GPU 確保が解放された後に Job 2 が同じ GPU(/dev/nvidia0)を順序拿到得て実行したことが、タイムラインとプロセス監視から確認できました。

---

## 構築全体のまとめ

| 段階 | 所要 | 状態 |
|------|------|------|
| driver | ~130秒 | ✅ 580.178.04 open |
| activate_driver | ~2秒 | ✅ 再起動なしでGPU認識 |
| cuda_toolkit | ~162秒 | ✅ V13.0.88 + ビルド依存 |
| gromacs_source | ~16秒 | ✅ 2026.3 + benchMEM |
| gromacs_build | ~87秒 | ✅ sm_120, mixed, CUDA |
| gromacs_test | ~16秒 | ✅ 249 ns/day |
| slurm | ~8秒 | ✅ gpumain, gpu:1 |
| slurm_test | ~93秒 | ✅ 2ジョブ逐次 COMPLETED |

### 利用開始のために

```bash
source /home/dl/.local/opt/gromacs-2026.3-cuda/bin/GMXRC
```

ジョブ投入例:
```bash
sbatch --partition=gpumain --gres=gpu:1 --cpus-per-task=8 --mem=8G job.sh
```

完了確認は `scontrol show job <JOBID>` と保存ログで行います(sacct は会計DB未設定のため使いません)。
1GPUを要求する2つのジョブを投入し、待機と順次実行を確認しました。
1GPUを要求する2つのジョブを投入し、待機と順次実行を確認しました。 本番ログを読みやすく再構成した映像から。

実測結果と所要時間

確認項目実測結果
Driver580.178.04 open / 再起動なしでGPU認識
CUDA / GCC / CMakeCuda compilation tools, release 13.0, V13.0.88 / gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 / cmake version 3.28.3
GROMACS2026.3 / CUDA / mixed / thread-MPI
直接実行20,000 steps / 15.9秒 / 249.166 ns/day
GPUプロセスの観測34サンプル
Slurmslurm-wlm 23.11.4 / gpumain / gpu:1
2ジョブJob 1, 2 / 両方COMPLETED・0:0 / 待機と順次実行を確認

直接実行のPerformance値は、今回の短い入力・設定での動作確認値です。研究系の違いや、長時間実行を含む一般的な性能比較には使っていません。

工程対話を含む実測時間
1. まずは説明だけを依頼する68.4秒
2. ドライバーを導入し、再起動なしで有効化する176.2秒
3. GROMACSの要件を理解する54.9秒
4. 開発環境を揃える187.4秒
5. ソースと公開入力を取得する91.0秒
6. GPU向けにビルドする150.9秒
7. Slurmの前にGPU計算を確かめる112.2秒
8. Slurmで何が変わるのかを先に説明する38.9秒
9. 実機の資源量でSlurmを設定する105.9秒
10. 2ジョブの待機と順次完了を確認する156.1秒

10個のプロンプトの実行時間合計は約19.0分でした。これにはLLMの応答、ツールとの往復、ダウンロード、ビルド、計算が含まれます。人間が説明を読む時間や、クリーンOSへ戻す準備時間は含みません。動画ではこの待ち時間を省略しています。

リハーサルで見つかった不足と、製品に戻した修正

CUDA Toolkit導入後の結果にGCC・FFTWの版と環境ロード方法が不足しており、LLMが追加調査を行った。内蔵手順が必要な版情報を一度で返すようにし、/etc/profile.d/computebuilder-cuda.shで新規ログイン時のPATHを設定した。

GROMACSのGMX_BUILD_UNITTESTS=OFFとBUILD_TESTINGの設定が不整合になり、未生成のテストターゲット参照でCMakeが停止した。BUILD_TESTING=OFFも明示して計算用バイナリーを構築する手順に統一した。全単体テストを通したという意味ではなく、公開benchMEMの実GPU計算を検証対象とした。

LLMの説明が、実際には使わない導入先やコマンド、根拠のない所要時間、誤ったMPI・CUDA関連の説明を補う箇所があった。setup_planにビルドとSlurmの具体的な仕様を含め、出力項目へCompute Capabilityなどの意味を付けた。新しい会話で説明内容を再確認した。

GPUプロセスの最初の観測では起動直後の使用率0%が表示されるため、観測期間中の最大使用率とそのサンプルを返すようにした。正常終了、Performance、実プロセスのGPU観測、使用率が正であることを合わせて判定する。

古い会話をresumeすると以前の説明の影響が残るため、製品の説明を変更した後の確認と本番は新しい会話から始めた。リハーサル途中の再実行は開発記録に保存し、本番映像にはクリーンOSからの実行を使った。

この検証で分かった範囲

今回確認したのは、Ubuntu 24.04とRTX PRO 6000 Blackwell 1枚、固定したソフトウェアの組合せです。すべてのLinux、GPU、研究ソフトへ同じ手順が適用できることや、任意の初心者が補助なしに使えることまで証明したものではありません。初期のSSH・権限設定、説明の分かりやすさ、対象外環境への案内には引き続き検証の余地があります。

標準モードではAIにsudoを使わない方針を与え、内蔵の導入ツールも公開しません。一般のSSH操作の権限は接続先OSが決めます。上級者モードはYOLOモードで、コマンドごとの承認確認を省きます。「説明を見てから実行を依頼する」会話上の判断と、OSによる権限の制限は別の仕組みです。

展示会では、短い体験と詳細な記録を組み合わせる

2026年10月21日のGPU Uniteでは、初回構築の流れをまとめた短い動画を流し、実機では構築済み環境を使った状態確認やSlurmへのジョブ投入を見せる構成を想定しています。来場者がその場で導入全体を待つ必要はありません。初回導入の詳細はYouTube版、プロンプトと設定の意味はこの記事で確認できるようにします。

短い体験で使う構築済み環境を「初回インストール」と説明しないことも大切です。映像の開始状態、内蔵手順の範囲、実行結果の根拠を明確に示します。

資料と出典

本番実行・作成: 2026年10月5日。実測値と回答はこの本番実行時点の記録です。

次のステップ

この記事を、ご自身の計算の高速化に活かすには

使用ソフト、現在の計算時間、改善したい点を分かる範囲でお知らせください。対応方法と評価範囲を個別に確認します。

構成・条件を確認したうえで、担当者が正式な見積もりをご案内します。

Read more