MPIとOpenMPの両方を使用するCのプログラムがあります。このようなプログラムをWindowsシステムでコンパイルするために、MinGWが提供するgccコンパイラをダウンロードしてインストールしました。このコンパイラを使用すると-fopenmp
、gccのキーを使用してOpenMPでCプログラムをコンパイルおよび実行できます。このようなプログラムは問題なく実行されます。MPIを使用してCプログラムをコンパイルおよび実行するために、MPICH2をダウンロードしてインストールしました。これで、MinGWが提供するgccの追加パラメーターを指定して、このようなプログラムを問題なくコンパイルして実行できます。しかし、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;
}