我在一个有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发布于 2013-06-30 16:44:38
"qstat -n“它说的类似于cn004/0*3。
Q:,这是否意味着它只在一个处理器上运行?
简短的回答是“不”。这并不意味着它在一个处理器上运行。"cn004/0*3“应该解释为”作业被分配了三个cpu核心。如果我们从0到5对核心进行编号,那么分配的核心将具有数字0、1和2“。
如果在该节点上运行另一个作业,它将收到接下来的三个连续数字“3、4和5”。在qstat -n输出中,这将类似于"cn004/3*3“。
您使用指令place=excl来确保其他作业不会获得该节点,因此基本上所有六个核心都是可用的。
现在是你的第二个问题:
问:它不会比我使用单处理器时更快
为了回答这个问题,我们需要知道算法是否被正确并行化。
https://stackoverflow.com/questions/17378791
复制相似问题