我在C上使用了一個使用MPI和OpenMP的程序。爲了在Windows系統上編譯這樣的程序,我下載並安裝了由MinGW提供的gcc編譯器。使用這個編譯器,我可以使用關鍵字-fopenmp
來編譯和執行OpenMP的C程序。這樣的程序運行沒有問題。爲了使用MPI編譯和執行C程序,我已經下載並安裝了MPICH2。現在我可以毫無問題地編譯和運行這些程序,爲MinGW提供的gcc指定附加參數。但是當我想編譯並運行同時使用OpenMP和MPI的程序時,我遇到了問題。我爲gcc編譯器指定了兩個鍵-fopenmp
和用於MPI程序的鍵。 Compilator沒有給我任何錯誤。我試圖通過由MPICH2提供的mpiexec
啓動我的程序。我的程序不想工作(這是一個HelloWorld程序,它沒有輸出任何內容)。請幫助我正確編譯和啓動此類程序。如何在Windows上使用MPI和OpenMP編譯和執行C程序
這是我的HelloWorld程序,它不會產生任何輸出。
#include <stdio.h>
#include <mpi.h>
int main(int argc, char ** argv)
{
int thnum, thtotal;
int pid, np;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&pid);
MPI_Comm_size(MPI_COMM_WORLD,&np);
printf("Sequental %d out of %d!\n",pid,np);
MPI_Barrier(MPI_COMM_WORLD);
#pragma omp parallel private(thnum,thtotal)
{
thnum = omp_get_thread_num();
thtotal = omp_get_num_threads();
printf("parallel: %d out of %d from proc %d out of %d\n",thnum,thtotal,pid,np);
}
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
return 0;
}
你可以得到一個MPI-只計劃工作(沒有OpenMP的)?您構建和運行該程序的確切步驟是什麼? –
@GregInozemtsev僅MPI程序運行良好。構建並運行僅使用MPI的程序:gcc -c -o main.o main.c -I「C:\ ... \ MPHICH2 \ include」; gcc -o main.exe main.o -L「C:\ ... \ MPICH2 \ lib」-lmpi; mpiexec -n 4 main.exe –