# GB200 使用說明
## 一、使用前必讀:架構差異
GB200 使用 NVIDIA Grace CPU,屬 **aarch64(Arm)** 架構,與 H200 節點及登入節點的 **x86_64** 架構不相容。須在 GB200 節點上編譯,或取得 Arm 版本的預編譯套件,以進行後續的開發作業。
:::danger
📢 **重要:目前沒有 Arm 架構的登入節點**
登入節點(`nano4.nchc.org.tw`)為 x86_64 架構,**無法**編譯出 GB200 可執行的程式。
所有 GB200 程式的編譯、套件安裝與環境建置,必須先透過 Slurm 取得 `gb200-dev` 佇列的計算節點,於該節點上進行。流程請見下節。
:::
---
## 二、在 GB200 節點上編譯
### 2-1. 取得編譯用節點
編譯屬於 CPU 工作,通常不需要多張 GPU,建議只申請 1 節點、1 張 GPU:
```bash
# 方式 A:salloc 取得互動式節點(適合反覆修改、除錯)
[user@25a-lgn01 ~]$ salloc --account=<PROJECT_ID> --partition=gb200-dev \
--nodes=1 --ntasks-per-node=1 --gres=gpu:1
salloc: Granted job allocation <job_id>
salloc: Nodes <node_name> are ready for job
# 方式 B:srun 直接進入互動式 shell(等同 A,指令較短)
[user@25a-lgn01 ~]$ srun -A <PROJECT_ID> -p gb200-dev -N1 --gres=gpu:1 \
-t 02:00:00 --pty bash
```
### 2-2. 確認已在 Arm 節點上
進入節點後,**務必先確認架構**再開始編譯:
```bash
[user@<node> ~]$ uname -m
aarch64 # 必須顯示 aarch64;若顯示 x86_64 表示仍在登入節點
[user@<node> ~]$ nvidia-smi # 確認 GPU 可見
```
### 2-3. 編譯
```bash
[user@<node> ~]$ module purge
[user@<node> ~]$ module load <gb200 專用 module>
# 建議將建置目錄依架構分開,避免與 H200 的建置產物混用
[user@<node> ~]$ mkdir -p build.aarch64 && cd build.aarch64
[user@<node> build.aarch64]$ cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/opt/aarch64
[user@<node> build.aarch64]$ make -j 16 && make install
```
### 2-4. 釋放資源
```bash
[user@<node> ~]$ exit # 離開後 Job 隨即結束
```
---
## 三、Python 環境建置
同樣必須在 GB200 節點上執行,且**建議為 Arm 建立獨立環境**,勿與 x86_64 環境共用路徑:
```bash
# 於 gb200-dev 節點上
[user@<node> ~]$ python -m venv $HOME/venv-aarch64
[user@<node> ~]$ source $HOME/venv-aarch64/bin/activate
[user@<node> ~]$ pip install <package>
# 確認安裝到正確架構
[user@<node> ~]$ python -c "import platform; print(platform.machine())"
aarch64
```
:::warning
📢 請將 venv 環境分成 x86_64 以集 aarch64 環境使用。建議環境目錄名稱直接帶上架構(如 `venv-aarch64`)以區別。
:::