我正在一个拥有8个节点的集群上进行MPI编程,每个节点都有一个Intel Xeon hexcore处理器。我的mpi代码需要三个处理器。
我使用qsub提交作业。当我使用“qstat -n”检查作业运行的处理器时,它会显示类似cn004 / 0 * 3的内容。
这是否意味着它只在一个处理器上运行?
因为它不比我使用单个处理器时加速(这是两种情况下域大小相同的时候)
我用于提交的脚本如下
#! /bin/bash
#PBS -o logfile.log
#PBS -e errorfile.err
#PBS -l cput=40:00:00
#PBS -lselect=1:ncpus=3:ngpus=3
#PBS -lplace=excl
cat $PBS_NODEFILE
cd $PBS_O_WORKDIR
mpicc -g -W -c -I /usr/local/cuda/include mpi1.c
mpicc -g -W mpi1.o -L /usr/local/cuda/lib64 -lOpenCL
mpirun -np 3 ./a.out
答案 0 :(得分:1)
“qstat -n”它的内容类似于cn004 / 0 * 3.
问:这是否意味着它只在一个处理器上运行?
简短的回答是“不”。这并不意味着它在一个处理器上运行。 “cn004 / 0 * 3”应该被解释为“作业被分配了三个cpu核心。如果我们将核心编号从0到5,那么分配的核心将具有数字0,1和2”。
如果要在节点上运行另一个作业,它将接收接下来的三个连续数字“3,4和5”。在qstat -n
输出中,这看起来像“cn004 / 3 * 3”。
您使用指令place=excl
来确保其他作业无法获得节点,因此基本上所有六个核都可用。
现在提出第二个问题:
问:与使用单一处理器相比,它的速度并不快
为了回答这个问题,我们需要知道算法是否正确并行化。