PBS调度程序为3个处理器的MPI程序分配相同的处理器

时间:2013-06-29 09:37:31

标签: mpi pbs

我正在一个拥有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

1 个答案:

答案 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来确保其他作业无法获得节点,因此基本上所有六个核都可用。

现在提出第二个问题:

  

问:与使用单一处理器相比,它的速度并不快

为了回答这个问题,我们需要知道算法是否正确并行化。