# 提交與管理Job範例 三種提交方式: sbatch、srun、salloc ## srun和salloc及為interactive job 使用者可透過slurm執行即時互動的計算工作,依照執行需求即時進行輸入、設定調整或重新執行。這種互動式作業尤其適合需要進行即時的跨節點測試、調整或除錯情境,待測試無誤後即可進行批次作業。 ## 方式一、以srun執行互動式shell :::info 使用srun提交工作 使用srun提交工作 ``` 1. 系統將分配一個節點,該節點上將有 1 個 GPU 可已使用,並執行 hostname,輸出顯示這個節點的名稱。 提交一個分配 1 GPU的工作,並執行hostname指令 [user@lgn01 ~]$ srun --partition=dev --account=<PROJECT_ID> --gpus-per-node=1 hostname 2. 預設MPI為”none”,您可以用指令 srun --mpi=list 查詢目前環境中支援的MPI版本, 並使用參數 --mpi 指定載入所需的MPI版本,範例如下: # 指定使用MPI “pmix_v4”,若成功載入,環境變數”SLURM_MPI_TYPE”就會顯示版本資訊 [user@lgn01 ~]$ srun --partition=dev --account=<PROJECT_ID> --gpus-per-node=1 --mpi=pmix_v4 env | grep MPI_TYPE … SLURM_MPI_TYPE=pmix_v4 ``` ::: ## 方式二、以salloc 取得計算資源 :::info 使用salloc提交工作 ``` 1. 使用salloc提交工作 # 提交一個使用單台GPU節點所有資源的互動式工作 (1 GPU) # 資源分配成功後,可以看到Job ID為1052,分配的計算節點為 hgpn10。 [user@lgn01 ~]$ salloc --partition=dev --account=<PROJECT_ID> --ntasks=1 --gpus-per-node=1 salloc: Granted job allocation 1052 salloc: Nodes hgpn10 are ready for job 2. 離開salloc SHELL # 此時會進入salloc的專用SHELL # 在您離開這個SHELL前,Job 1052會處於RUNNING狀態且持續計費 # 要離開salloc SHELL可以輸入 exit 指令 [user@lgn01 salloc_1052 ~]$ 3.查看Slurm Job環境資訊,可查看Job相關資訊 [user@lgn01 salloc_1052 ~]$ env |grep -i slurm 4. 在salloc SHELL中,您可以執行srun指令,每個srun等同於一個Job Step [user@lgn01 salloc_1052 ~]$ srun -c 1 -n 1 hostname 5. 進入此Job分配的計算節點執行程式或指令 #可以直接以ssh進入此Job分配的計算節點執行程式或指令 [user@lgn01 salloc_1052 ~]$ ssh hgpn10 [user@hgpn10 ~]$ srun hostname #或者,您也可以直接用srun進入此Job分配的計算節點執行程式或指令 [user@lgn01 salloc_1052 ~]$ srun --pty /bin/bash [user@hgpn10 salloc_1052 ~]$ hostname hgpn10 #欲離開計算節點,輸入exit指令 [user@hgpn10 salloc_1052 ~]$ exit [user@lgn01 salloc_1052 ~]$ 6. 使用sacct 指令查詢Job Step清單與執行結果 1052.0 和1052.1即為前面執行的step,數字0和1是step的編號 [user@lgn01 salloc_1052 ~]$ sacct -j $SLURM_JOBID JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 1052 interacti+ dev gov113080 1 COMPLETED 0:0 1052.extern extern gov113080 1 COMPLETED 0:0 1052.0 hostname gov113080 1 COMPLETED 0:0 1052.1 hostname gov113080 1 COMPLETED 0:0 1052.2 bash gov113080 1 COMPLETED 0:0 #欲離開互動式工作,輸入exit指令 [user@lgn01 salloc_1052 ~]$ exit salloc: Relinquishing job allocation 1052 salloc: Job allocation 1052 has been revoked. [user@lgn01 ~]$ ``` :::