2016-11-24 3 views
0

Нужно скомпилировать что-то вроде следующего кода (OpenMP + MPI in C) У меня очень мало опыта работы с компиляторами, и у меня возникли серьезные проблемы с этим , нужны четкие шаги, как компилировать такой код в windows , очень ценим!OpenMP + MPI Hybrid in C - сложность компиляции

#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

Вы можете скомпилировать с MPI, как и любую другую библиотеку, а у компиляторов есть определенный флаг OpenMP. Предполагая, что вы используете MS-MPI и ++ компилятор Microsoft C/C:

  1. Добавить MPI включает и библиотечные пути /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include" и /libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64"

    • Изменить "C:\Program Files (x86)\Microsoft SDKs\MPI" для везде, где вы установили MS-MPI
    • If на 32-битной машине, отменить Lib\x64 с Lib\x86
  2. Добавить библиотеку MPI в командной строке: "msmpi.lib"

  3. Добавить флаг OpenMP в командной строке: /openmp

cl /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include" /libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64" /openmp "msmpi.lib" /out:helloworld.exe helloworld.c 

документация знакомства от Microsoft: How to compile and run a simple MS-MPI program и /openmp (Enable OpenMP 2.0 Support)


Если вы используете инструменты GNU (mingw или cygwin), то то же самое применимо: ссылка MPI и добавьте флаг OpenMP.

gcc -I"/path/to/MPI/include" -L"/path/to/MPI/include" -lmpi --openmp -o helloworld.exe helloworld.c 

Обратите внимание, что вам может понадобиться изменить -lmpi для -lmpich, если ваша библиотека является производной MPICH.

+0

Большое спасибо за вашу помощь, Я запустил следующую строку: gcc -I "C: \ Program Files (x86) \ Microsoft SDK \ MPI \ Include" -L "C: \ Program Files (x86) \ Microsoft SDK \ MPI \ Lib \ x86 "-lmpi --openmp -o c.exe mpi.c , но я получил следующую ошибку: В файле, указанном в файле mpi.c: 3: 0: C: \ Program Файлы (x86) \ Microsoft SDK \ MPI \ Include/mpi.h: 50: 17: фатальная ошибка: sal.h: Нет такого файла или каталога Буду признателен за вашу помощь –

+0

См. [This] (https: // stackoverflow. com/questions/4434198/how-do-i-get-sal-h) и [that] (https://stackoverflow.com/questions/4434198/how-do-i-get-sal-h) вопрос о сале .час – Cimbali

Смежные вопросы