【问题标题】:How do I use the mpi.h in Xcode?如何在 Xcode 中使用 mpi.h?
【发布时间】:2018-01-22 17:06:02
【问题描述】:

我已经按照给定网站的方向安装了 MPICH3.2

http://mpitutorial.com/tutorials/installing-mpich2/

我下载了 tar 文件并在 Downloads/ 目录中并使用终端安装。我想在提交到远程机器之前测试我的程序是否在我的本地机器上运行。

问题是当我编写标头 #include "mpi.h" Xcode 时无法识别它。如何将 MPICH 库添加到 Xcode 中?或者我怎样才能让 Xcode 使用 mpi 编译?

【问题讨论】:

    标签: c++ xcode parallel-processing mpi mpich


    【解决方案1】:

    我个人会这样(请注意,我从不在 XCode 中编译 MPI 代码 - 我通过 Makefile、CMake 来编译)。

    我会在某个位置(来自来源)安装 MPI - 看看这里怎么做:Running Open MPI on macOS

    然后,我会创建超级简单的 MPI 代码(例如这样)

    #include <stdio.h>
    #include "mpi.h"
    
    int main(int argc, char * argv[]){
        int my_rank, p, n;
    
        MPI_Init(&argc, &argv);
        MPI_Comm_size(MPI_COMM_WORLD, &p);
        MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
    
        printf("size: %d rank: %d\n", p, my_rank);
    
        MPI_Finalize();
    }
    

    然后,我会使用 mpicc 编译它(如@Gilles 所述)。

    > mpicc -v -o mpi ./mpi.c
    > mpirun -np 4 ./mpi
    size: 4 rank: 1
    size: 4 rank: 2
    size: 4 rank: 0
    size: 4 rank: 3
    

    选项-v 将为您提供所需的所有位置。然后,我会将所有这些选项都带入 XCode。

    您还可以使用mpicc -show 获取构建基于 MPI 的代码所需的标志。

    事实上,它应该开箱即用。看这里:

    您需要设置包含(如图)

    和 MPI 库(如图)

    而且,你应该也可以运行它

    要使用mpirun 运行它,请确保设置:Product-&gt;Scheme-&gt;Edit Scheme。并且,确保将Arguments 更改为

    Executablempirun - 它应该在您安装 MPI 的 bin 目录中。

    更新

    看起来XCode 11.0 也需要传递库位置。在过去,它是从文件中推断出来的。现在,您必须在构建设置中显式传递它

    一旦您更新此位置。它将按预期工作。

    【讨论】:

    • .oOo。很酷,它对你有用;)如果你觉得这个答案有帮助,请考虑接受它并标记为你的问题的解决方案;).oOo。
    • 原帖还在吗?我收到“ld: library not found for -lmpi.20”错误
    • @Rio1210 - 在XCode 11.0 中,您必须明确地将库位置传递给搜索路径。老实说,自 2017 年以来我还没有尝试过,但我可以确认对于新的XCode,它需要设置更多。
    【解决方案2】:

    构建MPI 应用程序的“自然”方式是使用MPI 包装器(例如mpicc 和朋友)而不是本机编译器(例如gcc / clang 和朋友)。通过这样做,mpi.h 将位于包含路径中,您无需手动链接各种 MPI 库(顺便说一下,这是特定于 MPI 实现的)

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2014-04-02
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多