0

我正在尝试在安装了扭矩和 openmpi 1.3.2 的集群上运行 MPI 作业,但我总是收到以下错误:

“mpirun 无法启动指定的应用程序,因为它找不到可执行文件:可执行文件:-p 节点:compute-101-10.local 在尝试启动进程等级 0 时。”

我正在使用以下脚本来执行 qsub:

#PBS -N mphello
#PBS -l walltime=0:00:30
#PBS -l nodes=compute-101-10+compute-101-15
cd $PBS_O_WORKDIR
mpirun -npersocket 1 -H compute-101-10,compute-101-15 /home/username/mpi_teste/mphello

知道为什么会这样吗?我想要的是在每个节点(compute-101-10 和 compute-101-15)中运行 1 个进程。我在这里做错了什么?我已经尝试了 mpirun 命令的几种组合,但是程序要么只在一个节点上运行,要么给我上面的错误......

提前致谢!

4

2 回答 2

1

-npersocketOpenMPI 1.2 中不存在该选项。

OpenMPI 报告的诊断

mpirun 无法启动指定的应用程序,因为它找不到可执行文件: 可执行文件:-p 正是 OpenMPI 1.2 中的 mpirun 在使用此选项调用时会说的内容。

运行mpirun --version将确定计算节点上默认的 OpenMPI 版本。

于 2012-05-14T14:04:38.960 回答
0

问题是 -npersocket 标志仅受 Open MPI 1.3.2 支持,而我运行代码的集群只有不支持该标志的 Open MPI 1.2。

一种可能的解决方法是使用标志 -loadbalance 并使用标志 -H node1,node2,node3,... 指定我希望代码运行的节点,如下所示:

mpirun -loadbalance -H node1,node2,...,nodep -np number_of_processes program_name

这样每个节点将运行 number_of_processes/p 个进程,其中 p 是运行进程的节点数。

于 2012-05-15T17:03:11.847 回答