12

正在使用Open MPI. 我正在运行 Snow Leopard 10.6.4,并Open MPI通过自制软件包管理器进行安装。

当我使用 运行我的程序时mpirun -np 8 ./test,每个进程都报告它的等级为 0,并且认为进程总数为 1,并且process rank: 0, total processes: 1向控制台输出了 8 行。

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

4

4 回答 4

7

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

此外,除非您计划在 OS X 机器集群上运行最终代码,否则我强烈建议您在虚拟机中安装 Linux 版本,例如 virtualbox,以测试和开发这些代码。

于 2011-03-03T23:01:16.673 回答
6

完全卸载以前的 MPI 实现。

就我而言,我先安装了 MPICH2,然后将其卸载,然后更改为 OpenMPI。然后发生了同样的情况,所有进程的等级都是 0。我解决这个问题的方法是:从我的系统中完全卸载 MPICH2(我使用 Ubuntu/Debian Linux)。

# apt-get remove mpich2
# apt-get autoremove
于 2013-02-25T05:15:52.257 回答
4

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

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(确保只安装其中一个)。

于 2014-04-21T16:03:41.493 回答
2

我在 Linux 上的 C 中的 openMPI 遇到了同样的问题。使用 MPIch2 代替,问题得到解决(但请记住在最后运行 MPI_Finalize() 否则它会变得很奇怪。)

于 2012-06-29T16:32:30.047 回答