2017-08-02 42 views
1

的情況是這一個,我分配ressources(2個節點,64個CPU),以工作與salloc:列表作業的未決步驟

salloc -N 1-2 -n 64 -c 1 -w cluster-node[2-3] -m cyclic -t 5 
salloc: Granted job allocation 1720 

然後,我用srun創建步驟,我的工作:

for i in (seq 70) 
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 & 
end 

因爲我爲我的作業創建了比可用的cpus更多的步驟,所以步驟「等待」直到空閒的CPU。

當我使用帶-s選項的squeue列出步驟時,我只能查看正在運行的步驟。

squeue -s -O stepid:12,stepname:10,stepstate:9 
1720.0  sleep  RUNNING 
[...] 
1720.63  sleep  RUNNING 

我的問題是,是否有步驟從狀態RUNNING 不同的工作,如果是的話,有什麼辦法可以查看那些SQUEUE(或其它命令)?

回答

1

不確定Slurm可以提供這些信息。另一種方法是使用GNU Parallel,這樣在CPU可用之前,作業步驟根本不會啓動。在當前設置中,所有的作業步驟都立即開始,沒有可用的CPU正在等待。

因此,與你使用相同的配置,更換

for i in (seq 70) 
    srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 & 
end 

parallel -P $SLURM_NTASKS srun --exclusive -N 1 -n 1 --jobid=1720 sleep 60 

然後SQUEUE的輸出應該列出運行和暫掛步驟。

N.B.不知道--jobid=選項需要在這裏BTW

+0

感謝您的回答,我真正的目標是找到一種方法來使用循環分配的任務來平衡節點上的工作負載。在深入瞭解手冊之後,我終於在配置中找到了LLD選項,該選項效果很好。感謝平行提示,我是這個命令的忠實粉絲! – Beuss