1

我在一个有 8 个节点的集群上进行 MPI 编程,每个节点都有一个英特尔至强六核处理器。我的 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
4

1 回答 1

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

现在回答你的第二个问题:

问:它没有比我使用单处理器时快

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

于 2013-06-30T08:44:38.420 回答