【问题标题】:PBS scheduler assigning same processor for an MPI program of 3 processorsPBS 调度程序为 3 个处理器的 MPI 程序分配相同的处理器
【发布时间】:2013-06-29 09:37:31
【问题描述】:

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

【问题讨论】:

    标签: mpi pbs


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

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

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

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

    【讨论】:

    • 与 CUDA 不同,OpenCL 编译器是运行时环境的一部分,因此mpicc 不需要“启用 OpenCL”的编译器后端。
    • @HristoIliev 谢谢,我不确定。
    • 有什么办法可以在程序内部找出程序正在运行的“节点”吗?这是如果我给了 select=2
    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 2023-02-21
    • 2013-08-06
    • 2016-08-13
    • 2013-09-04
    • 2010-09-28
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多