如何在Mac OS X上使用mpi

jjC*_*jCS 13 macos install mpi

我一直在寻找一种在我的Mac上使用mpi的方法,但一切都非常先进.

我已经成功安装了open-mpi

brew install open-mpi
Run Code Online (Sandbox Code Playgroud)

我有.c文件准备编译和运行.当我输入:

mpicc -o <file> <file.c>
Run Code Online (Sandbox Code Playgroud)

其次是

mpirun <file>
Run Code Online (Sandbox Code Playgroud)

我明白了

[xxxxx-MacBook-Pro.local:13623] [[44919,0],0] ORTE_ERROR_LOG:文件中的错误参数/ pmix/pmix_server.c第262行
[xxxxx-MacBook-Pro.local:13623] [[44919] ,0],0] ORTE_ERROR_LOG:第666行文件ess_hnp_module.c中的错误参数

看起来orte_init由于某种原因失败了; 你的并行过程很可能会中止.在orte_init期间,并行进程可能会失败的原因有很多; 其中一些是由于配置或环境问题.这种失败似乎是内部失败; 这里有一些额外的信息(可能只与Open MPI开发人员有关):

pmix server init failed
- >返回值Bad参数(-5)而不是ORTE_SUCCESS

我输入时也会收到相同的消息:

mpirun -np 2 <file>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Oo.*_*.oO 28

如果我是你,我会做以下事情:

安装Open MPI非常简单

https://www.open-mpi.org/software/ompi/v2.0/

> tar xf openmpi-2.0.2.tar
> cd openmpi-2.0.2/
> ./configure --prefix=$HOME/opt/usr/local
> make all
> make install
> $HOME/opt/usr/local/bin/mpirun --version
mpirun (Open MPI) 2.0.2

Report bugs to http://www.open-mpi.org/community/help/
Run Code Online (Sandbox Code Playgroud)

您可以使用超级简单的hello world进行测试

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(NULL, NULL);
    int rank;
    int world;
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &world);
    printf("Hello: rank %d, world: %d\n",rank, world);
    MPI_Finalize();
}
Run Code Online (Sandbox Code Playgroud)

一切就绪后,只需编译并运行代码即可

$HOME/opt/usr/local/bin/mpicc -o hello ./hello.c
$HOME/opt/usr/local/bin/mpirun -np 2 ./hello
Hello: rank 0, world: 2
Hello: rank 1, world: 2
Run Code Online (Sandbox Code Playgroud)

在macOS上工作得很好


let*_*ite 8

以@ Oo.oO提供的答案为基础。
安装OpenMPI
可以使用安装brew

brew install openmpi


shi*_*nxg 6

在某些版本的 Mac OS X / MacOS Sierra 上,默认临时目录位置足够长,应用程序很容易为超过最大允许文件名长度的临时文件创建文件名,这可能会导致此错误。所以你应该使用设置临时目录export TMPDIR=/tmp

更多细节在这里https://www.open-mpi.org/faq/?category=osx


sac*_*ruk 6

如果你安装了 anaconda,这对我来说是最快的选择:

conda install mpi4py openmpi
Run Code Online (Sandbox Code Playgroud)