【问题标题】:How to use mpi on Mac OS X如何在 Mac OS X 上使用 mpi
【发布时间】:2017-07-30 22:34:59
【问题描述】:

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

我已经成功安装了 open-mpi 使用

brew install open-mpi

我已经准备好编译和运行的 .c 文件。当我输入时:

mpicc -o <file> <file.c>

紧随其后

mpirun <file>

我明白了

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

看起来 orte_init 由于某种原因失败了;您的并行流程 很可能中止。并行进程的原因有很多 在 orte_init 期间可能会失败;其中一些是由于配置或 环境问题。此故障似乎是内部故障; 这是一些附加信息(可能仅与 开放 MPI 开发者):

pmix 服务器初始化失败
--> 返回值 错误参数 (-5) 而不是 ORTE_SUCCESS

我输入时也收到同样的信息:

mpirun -np 2 <file>

我做错了什么?

【问题讨论】:

  • 你能成功运行这个吗? mpirun -np 2 hostname
  • 您可能需要export TMPDIR=/tmp 以防止某些路径被截断

标签: macos installation mpi


【解决方案1】:

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

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/

您可以使用超级简单的 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();
}

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

$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

在 macOS 上完美运行

更新

如果您正在寻找 macOS 上的MPI 相关环境,我建议您查看modules 的概念。

【讨论】:

  • make install之后应该是$HOME/opt/usr/local/bin/mpirun --version(缺少/opt)。
  • .oOo。感谢您发现它。 .ooo.
  • 您可能还对两个不同的主题感兴趣:owsiak.org/…owsiak.org/… :)
【解决方案2】:

基于@Oo.oO 提供的答案。
安装OpenMPI.
可以使用brew进行安装。

brew install openmpi

【讨论】:

  • 工作没有问题。 Mac 10.14.4 上的 Homebrew 2.1.10 - 谢谢。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    conda install mpi4py openmpi
    

    【讨论】:

    • mpi4py 不是频道。只需conda install -c anaconda openmpi
    【解决方案5】:

    我注意到在执行过程中 pmix 提供了一个不必要的异常:

        PMIX ERROR: ERROR in file gds_ds12_lock_pthread.c at line 206
    

    为了防止这种情况,在执行主文件之前,请务必在终端提示符下键入:

        export PMIX_MCA_gds=hash
    

    这有助于消除 pmix 噪音,并且必须在每个会话中重复。

    注意: 在 mac 中,pmi 允许的最大插槽数默认为 2。 “slot”是 Open MPI 术语,表示我们可以分配的单元 启动一个进程。这决定了我们可以在代码中运行指令多少次。 要扩展槽数,请执行以下步骤:

    1.创建一个任意名称的主机文件

    2.内写:

          localhost slots = <#>
    

    其中#=否。需要的插槽数。

    1. 编译时在终端提示符下写下:

      mpicc  -hostfile -<filename>
      
      1. 在终端提示符下运行时:

        mpirun -hostfile -np

      虽然对最后一个注释感到厌烦,但它并不经常需要,并且主机文件的文件扩展可能会成为某些架构的问题,例如我自己的 x86。

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多