【问题标题】:error on running mpi job运行 mpi 作业时出错
【发布时间】:2012-05-21 00:29:22
【问题描述】:

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

提前致谢!

【问题讨论】:

  • 您能否检查您是否在节点上配置了 OpenMPI 1.3.2。 -npersocket 选项在 OpenMPI 1.2 中不存在,这正是 OpenMPI 1.2 中的 mpirun 如果使用此选项调用的话。使用mpirun --version
  • 是的,就是这样...:/,谢谢!
  • 我会将其作为答案发布,以便您关闭问题。

标签: mpi cluster-computing


【解决方案1】:

-npersocket 选项在 OpenMPI 1.2 中不存在。

OpenMPI 报告的诊断信息

mpirun 无法启动指定的应用程序,因为它不能 查找可执行文件: 可执行文件:-p 如果使用此选项调用,这正是 OpenMPI 1.2 中的 mpirun 所说的。

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

【讨论】:

  • 顺便说一句,Open MPI 1.3.x 是古老的。我们昨天刚刚发布了 Open MPI 1.6。你应该升级。
  • 我知道它很古老,但这不取决于我,取决于集群管理员:/
【解决方案2】:

问题在于 -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 是运行进程的节点数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多