我个人会这样(请注意,我从不在 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->Scheme->Edit Scheme。并且,确保将Arguments 更改为
和 Executable 到 mpirun - 它应该在您安装 MPI 的 bin 目录中。
更新
看起来XCode 11.0 也需要传递库位置。在过去,它是从文件中推断出来的。现在,您必须在构建设置中显式传递它
一旦您更新此位置。它将按预期工作。