如何在OS X上编译OpenMP和MPI混合C程序



我正在测试一个HelloWorld C程序,该程序在我的Macbook Pro上混合了OpenMP和MPI。

使用 mpicc -fopenmp helloworld.c -o helloworldmpicc -openmp helloworld.c -o helloworld 进行编译都会给我一个错误消息fatal error: 'omp.h' file not found.

如果我只编译 MPI 部分mpicc helloworld.c -o helloworld,或者只编译 OpenMP 部分gcc -fopenmp helloworld.c -o helloworld,它工作得很好。

我在SO中查找,我看到人们在Linux中成功编译,所以我想知道这是否仅适用于OS X的问题。我应该为 OS X 使用除 -openmp-fopenmp 以外的其他标志吗?我正在使用 OpenMPI-1.10.0 和 OS X El Capitan (10.11.1)。

简单的HelloWorld程序代码如下,我遵循的步骤在此页面上:

#include <stdio.h>
#include "mpi.h"
#include <omp.h>
int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];
  int iam = 0, np = 1;
  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Get_processor_name(processor_name, &namelen);
  #pragma omp parallel default(shared) private(iam, np)
  {
    np = omp_get_num_threads();
    iam = omp_get_thread_num();
    printf("Hello from thread %d out of %d from process %d out of %d on %sn",
           iam, np, rank, numprocs, processor_name);
  }
  MPI_Finalize();
}

我只使用:

#include "/usr/local/opt/llvm/lib/clang/3.8.1/include/omp.h"

并编译使用

mpicc -openmp main.c

使用

mpicc -qopenmp -o prog prog.c

最新更新