2017-08-02 89 views
1

シナリオはこの1つである、ステップ、私はsallocでジョブにressources(2つのノード、64 CPU)を割り当てる:リストジョブの保留が

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 

私は自分の仕事に利用可能なCPUより多くのステップを作成したので、ステップは空きCPUまで "保留中"です。

手順を一覧表示するのに-sオプションを使用してsqueueを使用すると、実行中のもののみを表示できます。

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

私の質問は、ステップは仕事のようなを実行は異なる状態を持っているのであり、そうならば、のsqueue(または他のコマンド)を有するものを表示する方法はありますか?

答えて

1

Slurmが情報を提供できるかどうかわかりません。 1つの方法は、GNU Parallelを使用して、CPUが使用可能になるまでジョブステップがまったく開始されないようにすることです。現在の設定では、すべてのジョブステップが一度に開始され、使用可能なCPUを持たないジョブステップが待機しています。同じ配分とそう

使用として、その後のsqueueの出力は、RUNNING、保留中のステップをリストする必要があり

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

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

を交換してください。

N.B.ここでは--jobid=オプションが必要なのかどうかわからないBTW

+0

本当にありがとうございました。実際の目的は、タスクの循環分散を使用してノードの負荷を分散する方法を見つけることでした。マニュアルの深いダイビングの後、私はついにLLDオプションを見つけました。平行したチップをありがとう、私はこのコマンドの大ファンです! – Beuss