2016-02-11 3 views
1

Я тестировал программу HelloWorld C, которая смешивает OpenMP и MPI на моем Macbook Pro.Как скомпилировать гибридную программу OpenMP и MPI на OS X

Компиляция с mpicc -fopenmp helloworld.c -o helloworld или mpicc -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 EI Capitan (10.11.1).

Простой 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(); 
} 
+0

компиляцией openmp first, ссылка с mpi позже – user3528438

+0

@ user3528438 Спасибо за ваш ответ. Можете быть более конкретными? – Jimmy

+0

, так как файл 'omp.h' не находится во время компиляции, добавьте' -IpathTo_omp.h_File' в оператор компиляции – user3629249

ответ

1

Я просто использовать:

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

и компилировать с

mpicc -openmp main.c 
Смежные вопросы