我有一个使用 MPI 和 OpenMP 的 C 程序。为了在 Windows 系统上编译这样的程序,我下载并安装了 MinGW 提供的 gcc 编译器。-fopenmp
使用这个编译器,我可以使用gcc的密钥通过 OpenMP 编译和执行 C 程序。这样的程序运行没有问题。为了使用 MPI 编译和执行 C 程序,我下载并安装了 MPICH2。现在我可以毫无问题地编译和运行这样的程序,为 gcc 指定额外的参数,由 MinGW 提供。但是当我想编译和运行一个同时使用 OpenMP 和 MPI 的程序时,我遇到了问题。我-fopenmp
为 gcc 编译器指定了 MPI 程序的键和键。编译器没有给我任何错误。我试图通过mpiexec
,由 MPICH2 提供。我的程序不想工作(它是一个 HelloWorld 程序,它没有打印任何输出)。请帮助我正确编译和启动此类程序。
这是我的 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;
}