slurm作業管理:一次提交執行多個任務
阿新 • • 發佈:2019-02-20
針對搶佔式的作業排程系統,如果分配節點時候是獨佔節點,那麼每次申請的資源最少就是1個節點。如何實現一次提交作業,計算多個任務呢?(包括序列、openmp或mpi的任務)。最簡單的方式就是按照自己的需求寫一個執行指令碼,然後通過作業管理系統提交即可。下面給出一個具體的例子加以說明,先給出例項,然後給出詳細解釋:
#!/bin/bash
cd ~/helloworld
yhrun -N1 -n1 ./helloworld &
cd ~/gaussian
export OMP_NUM_THREADS=2
yhrun -N1 -n1 ./g09
cd ~/vasp
yhrun -N1 -n3 ./vasp &
cd ~/lmp
export OMP_NUM_THREADS=3
yhrun -N1 -n2 ./lmp < in.lj &
wait
詳細解釋如下:
#!/bin/bash
# 這是一個bash的指令碼
# 腳本里面寫什麼,就會執行什麼
# 我將會申請1個有12cpu核的計算節點,具體如何分配這些核做計算,我自己說了算
# 先用1個核執行一個helloworld吧
cd ~/helloworld # 進入到helloworld所在目錄
yhrun -N1 -n1 ./helloworld &
# yhrun 是天河系列的叢集的"mpirun"
# -N1表示1個節點
# -n1表示一個核
# helloworld 是 可執行程式的名字
# & 表示放到後臺執行(計算節點的後臺),如果不寫的話,指令碼就會卡在這一行,
# 直到執行完這一行,才會往下執行。而我們希望同時執行多個任務,所以放到後臺
# 再用2個核,執行一個openmp的程式吧
cd ~/gaussian
export OMP_NUM_THREADS=2
yhrun -N1 -n1 ./g09 &
# OMP_NUM_THREADS=2 表示用OMP執行緒數=2
# ./g09 是一個openmp程式的名字(舉例)
# 再用3個核,執行一個mpi的程式吧
cd ~/vasp
yhrun -N1 -n3 ./vasp &
# -n3 啟用3個mpi程序,執行mpi任務
# 最後用6個核,執行一個mpi+openmp的程式吧
cd ~/lmp
export OMP_NUM_THREADS=3
yhrun -N1 -n2 ./lmp < in.lj &
# 設定n=2,omp=3 開啟2個mpi程序,每個mpi程序開啟3個omp執行緒
# ./lmp 是mpi+openmp的程式名
# < in.lj 給定輸入檔案
# 末尾增加
wait
# 增加wait,讓指令碼等待以上後臺任務執行結束後再停止
# 不新增的話,指令碼執行到末尾就結束了,作業也就結束了。
當然,其實還有一種更為“精確”的控制每個程序執行哪個任務的高階寫法,但對於普通使用者,一般沒這個需求,故不在此介紹了。如確實有這個需求的歡迎留言。
我的個人網站:傳送門