我在我的 Macbook Pro 上测试混合了 OpenMP 和 MPI 的 HelloWorld C 程序。
用 mpicc -fopenmp helloworld.c -o helloworld
或 mpicc -openmp helloworld.c -o helloworld
编译都给我一个错误信息 fatal error:找不到“omp.h”文件
。
如果我使用 mpicc helloworld.c -o helloworld
只编译 MPI 部分,或者使用 gcc -fopenmp helloworld.c -o helloworld
只编译 OpenMP 部分,它工作得很好。
我在 SO 中查找并且看到有人在 Linux 中成功编译,所以我想知道这是否仅适用于 OS X。除了 -openmp
或 -fopenmp
之外,我应该为 OS X 使用不同的标志吗?我在 OS X El Capitan (10.11.1) 中使用 OpenMPI-1.10.0。
简单的 HelloWorld 程序代码如下,我遵循的步骤在 this page 上:
#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 %s\n",
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
关于c - 如何在 OS X 上编译 OpenMP 和 MPI 混合 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343498/