我在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 –