我正在尝试在 Rocks v5.4.3 集群上使用 Sun Grid Engine 调度程序运行并行 MPI 作业。集群有一个名为“all.q”的队列,它有 22 个计算节点:其中 21 个有 8 个 CPU,1 个有 4 个 CPU。但是,当并行作业运行时,它创建的所有任务都被限制在一个节点上。
例如,如果我在作业提交脚本中请求 16 个 CPU(任务)并使用 将作业提交给调度程序qsub
,则作业成功启动,但所有 16 个任务都在单个节点(第一个分配的节点)上启动,而不是分配给调度程序分配给作业的节点。
这个测试用例的作业提交脚本如下:
#!/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
lmp_openmpigrep
进程,我会得到以下信息:
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 个进程,而top
在 compute-1-16 上运行时显示没有 lmp_openmpi 进程。
我不确定我对这个问题的解释有多彻底,所以如果需要更多信息,请告诉我。我也是 Rocks 和 SGE 的新手,所以希望我的例子足够清楚。如果没有,我会修改。提前感谢大家。