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上工作得很好
在某些版本的 Mac OS X / MacOS Sierra 上,默认临时目录位置足够长,应用程序很容易为超过最大允许文件名长度的临时文件创建文件名,这可能会导致此错误。所以你应该使用设置临时目录export TMPDIR=/tmp
更多细节在这里https://www.open-mpi.org/faq/?category=osx