我發現這讓我在這似乎不過工作我仍然不確定,如果我完全理解爲什麼,所以這個問題的腳本到一些非常類似的問題..SLURM每個節點提交多個任務?
我的問題(例如):在3個節點,我想在每個節點上運行12個任務(總共36個任務)。另外每個任務都使用OpenMP並應使用2個CPU。在我的情況下,一個節點有24個CPU和64GB內存。我的腳本是:
#SBATCH --nodes=3
#SBATCH --ntasks=36
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=2000
export OMP_NUM_THREADS=2
for i in {1..36}; do
srun -N 1 -n 1 ./program input${i} >& out${i} &
done
wait
這似乎是工作,因爲我需要,一個節點上連續運行的任務,直到該節點上的所有CPU都在使用,然後繼續運行下一個節點上的進一步任務,直至所有的CPU再次使用等。
我的問題..我不確定這是否實際上是它做的(?),因爲我沒有完全理解srun關於-n的手冊頁,而且我還沒有之前使用過srun。 主要是我的困惑來自於「-n」:在-n的手冊頁中,「默認是每個節點有一個任務,..」,所以我期望如果我使用「srun -n 1」,只有一個任務會可以在每個節點上運行,但似乎並非如此。 此外,當我嘗試如「srun -n 2 ./program」它似乎只運行兩個完全相同的程序兩次不同的任務,而無法使用不同的輸入文件..我想不出爲什麼這會有用?