为什么我的所有Open MPI进程都排在0位?

问题描述 投票:8回答:4

我正在使用Open MPI编写并行程序。我正在运行Snow Leopard 10.6.4,我通过Open MPI包管理器安装了homebrew

当我使用mpirun -np 8 ./test运行我的程序时,每个进程报告它的排名为0,并且认为进程总数为1,并且8行process rank: 0, total processes: 1被吐出到控制台。

我知道这不是代码问题,因为完全相同的代码将在我学院的计算机实验室的某些Ubuntu机器上按预期编译和运行。我查看了自制软件的bug跟踪器,没有人报告Open MPI软件包存在问题。我不知所措。

macos openmpi homebrew
4个回答
6
投票

检查你要调用的mpirun。正在执行的mpirun正在启动二进制的8个独立实例。因此,每个实例都是一个Universe大小为1且等级为0的MPI应用程序。

此外,除非您计划在OS X盒的集群上运行最终代码,否则我强烈建议在VM中安装Linux版本(如virtualbox)来测试和开发这些代码。


6
投票

完全卸载以前的MPI实现。

在我的情况下,我首先安装MPICH2,然后卸载它,并更改为OpenMPI。然后同样的情况发生,所有进程的排名都是0.我做了解决这个问题的方法是:从我的系统中完全卸载MPICH2(我使用的是Ubuntu / Debian Linux)。

# apt-get remove mpich2
# apt-get autoremove

2
投票

我在Linux上的C语言中遇到了与openMPI相同的问题。使用MPIch2代替了,问题得到解决(但记得最后运行MPI_Finalize()或者它很奇怪。)


2
投票

今天我遇到了和你一样的问题。最后我得到了解决方案。

https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_All_my_processes_get_rank_0

简单地说,答案是,MPI需要合适的PMI来告诉流程他们的等级和其他东西。因此,我们需要使用相应的mpirun / mpiexec来运行MPI程序。

我猜你的问题与mpi程序编译器和mpirun工具之间的不匹配有关。所以尝试卸载所有,并安装MPICH / openMPI(确保只安装其中一个)。

© www.soinside.com 2019 - 2024. All rights reserved.