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