我試圖在Rocks v5.4.3羣集上使用Sun Grid Engine調度程序運行並行MPI作業。該羣集有一個名爲「all.q」的隊列,其中有22個計算節點:其中21個具有8個CPU,1個具有4個CPU。然而,當一個並行作業運行時,它創建的所有任務都被限制在一個節點上。例如,如果我在作業提交腳本中請求16個CPU(任務),並使用qsub
將作業提交給調度程序,那麼作業將成功啓動,但所有16個任務都是在單個節點上開始的(第一個分配給第一個節點),而不是分配給調度程序分配給作業的節點。Rocks羣集(SGE調度程序)上的MPI作業不運行多個節點
對於這個測試用例作業提交腳本如下:
#!/bin/bash
#$ -N test
#$ -cwd
#$ -pe mpi 16
#$ -S /bin/bash
#$ -q all.q
#$ -e $JOB_NAME.e$JOB_ID
#$ -o $JOB_NAME.o$JOB_ID
lammps=/home/Brian/lammps/lmp_openmpi
/opt/intel/openmpi-1.4.4/bin/mpirun -machinefile $TMPDIR/machines \
-np $NSLOTS $lammps -in in.melt > job.log
從調度輸出文件顯示,工作任務被分配到以下節點:
compute-1-14
compute-1-14
compute-1-14
compute-1-14
compute-1-14
compute-1-14
compute-1-14
compute-1-14
compute-1-16
compute-1-16
compute-1-16
compute-1-16
compute-1-16
compute-1-16
compute-1-16
compute-1-16
然而,如果我將ssh
轉換爲compute-1-14並運行top
和grep
的lmp_openmpi進程,我會得到以下結果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21762 Brian 25 0 253m 87m 5396 R 99.1 0.5 2:19.60 lmp_openmpi
21761 Brian 25 0 253m 87m 5508 R 73.3 0.5 1:50.14 lmp_openmpi
21759 Brian 25 0 253m 87m 5804 R 71.3 0.5 1:55.38 lmp_openmpi
21760 Brian 25 0 253m 87m 5512 R 71.3 0.5 1:36.27 lmp_openmpi
21765 Brian 25 0 253m 87m 5324 R 61.4 0.5 1:53.11 lmp_openmpi
21763 Brian 25 0 253m 87m 5496 R 59.5 0.5 1:53.14 lmp_openmpi
21770 Brian 25 0 253m 87m 5308 R 59.5 0.5 1:45.21 lmp_openmpi
21767 Brian 25 0 253m 87m 5504 R 57.5 0.5 1:58.65 lmp_openmpi
21772 Brian 25 0 253m 87m 5304 R 43.6 0.5 1:52.24 lmp_openmpi
21771 Brian 25 0 253m 87m 5268 R 39.6 0.5 1:51.23 lmp_openmpi
21773 Brian 25 0 253m 87m 5252 R 39.6 0.5 1:52.02 lmp_openmpi
21774 Brian 25 0 253m 87m 5228 R 39.6 0.5 1:47.85 lmp_openmpi
21766 Brian 25 0 253m 87m 5332 R 29.7 0.5 1:51.18 lmp_openmpi
21764 Brian 25 0 253m 87m 5356 R 27.7 0.5 2:09.05 lmp_openmpi
21768 Brian 25 0 253m 87m 5356 R 21.8 0.5 1:35.28 lmp_openmpi
21769 Brian 25 0 253m 87m 5324 R 7.9 0.5 1:50.63 lmp_openmpi
這是16個進程,而在compute-1-16上運行top
將顯示no lmp_openmpi進程。
我不知道我是如何徹底地解釋了這個問題,所以如果需要更多的信息,請讓我知道。我也是Rocks和SGE的新手,所以希望我的例子足夠清晰。如果沒有,我會修改。感謝所有提前。
$ TMPDIR /機器是什麼樣的?你確定不應該是$ TMP /機器嗎? http://www.rocksclusters.org/roll-documentation/sge/4.2.1/submitting-batch-jobs.html –
我試着換成$ TMP /機器,但給出了相同的結果。我認爲在我們的集羣上構建openMPI存在一個問題。我最終安裝了最新版本的英特爾編譯器v16.0.3和英特爾MPI v5.1.3,它解決了多節點問題。 (還是)感謝你的建議。 – Brian