# Job 提交與管理範例 ## 方式1: `sbatch` 提交工作 `sbatch` 用於提交 Batch 作業,適合長時間或多節點計算任務--工作會在背景排隊、執行,完成後把結果寫入檔案。 1. 建立 Job Script ```bash # sbatch Job Script (sample-job.sh) # 此範例資源會分配兩個計算節點,每個節點使用8張GPU進行計算 [user@25a-lgn01 ~]$ vim sample-job.sh #!/bin/bash #SBATCH --account=<PROJECT_ID> # (-A) iService Project ID #SBATCH --job-name=sbatch # (-J) Job name #SBATCH --partition=dev # (-p) Slurm partition #SBATCH --nodes=2 # (-N) Maximum number of nodes to be allocated #SBATCH --ntasks-per-node=8 # Number of MPI tasks on each node #SBATCH --gres=gpu:8 # use 8 gpus on each node #SBATCH --output=job-%j.out # (-o) Path to the standard output file #SBATCH --error=job-%j.err # (-e) Path to the standard error file #SBATCH --mail-type=END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL) #SBATCH --mail-user=user@example.com # Where to send mail. Set this to your email address module load gcc/11.5 module load openmpi/5.0.10-cuda13.0 mpirun ./hello ``` 2. 提交 Job Script ``` [user@25a-lgn01 ~]$ sbatch sample-job.sh ``` 3. 查詢自己Job queue 狀態 ``` [user@25a-lgn01 ~]$ squeue --me ``` 4. 查詢Job 執行狀態 ``` [user@25a-lgn01 ~]$ scontrol show job <job_id> ``` ## 方式2: `salloc` 提交工作 `salloc` 於建立互動式作業,常用於程式開發、除錯與資源測試。 1. 提交互動式 Job ``` # 提交一個使用2台GPU節點互動式工作 # 範例為資源分配成功後,可以看到Job 55049,分配的計算節點為 25a-hgpn[107-108]。 [user@25a-lgn01 ~]$ salloc --account=<PROJECT_ID> --partition= dev --nodes=2 --ntasks-per-node=8 --gres=gpu:8 salloc: Granted job allocation 55049 salloc: Nodes 25a-hgpn[107-108] are ready for job # 此時進入一個互動式 Shell # 在您離開這個SHELL之前,Job 55049會處於RUNNING狀態且持續計費 [user@25a-lgn01 salloc_55049 ~]$ # 要離開互動式 Shell,可以輸入 exit 指令 [user@25a-lgn01 salloc_55049 ~]$ ``` 2. 查詢 Slurm Job 環境變數 ``` # 查看Slurm Job環境資訊,可查看Job相關資訊 [user@25a-lgn01 salloc_55049 ~]$ env |grep -i slurm ```