运行mpi作业时出错

时间:2012-05-12 22:14:16

标签: mpi cluster-computing

我正在尝试在安装了扭矩和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命令的组合,但是程序只在一个节点上运行,或者它给我上面的错误......

提前致谢!

2 个答案:

答案 0 :(得分:1)

OpenMPI 1.2中不存在-npersocket选项。

OpenMPI报告的诊断

  

mpirun无法启动指定的应用程序,因为它无法启动   找到可执行文件:可执行文件:-p   正是如果用这个选项调用,OpenMPI 1.2中的mpirun就是这么说的。

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

答案 1 :(得分: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是运行进程的节点数。