私はしばらく MPI を使用していますが、経験がありません。そこで、次の実装の一般的な構造についてアドバイスを求めるためにここにいます。たとえば、メインの C++ ファイルがあるとします。
MPI_Init(&narg,&arg);
int me,nprocs;
MPI_Comm_rank(MPI_COMM_WORLD,&me);
MPI_Comm_size(MPI_COMM_WORLD,&nprocs);
int N = 10;
for (int i=0;i<N;i++) {
//(1)do some stuff in parallel...
//(2)gather results and write an input file for executable
MPI_Barrier(MPI_COMM_WORLD);
//(3)run executable in parallel.
// which is usually run from command line as:
//
// mpirun -np 6 external.exe < input.file
//
MPI_Barrier(MPI_COMM_WORLD);
//(4)gather output from executable, distribute info among processors and keep running
}
MPI_Finalize();
それは(3)で、それを行う方法を理解するのに問題があり、使用できるプロセッサの数を教えてくれます。私の混乱は、ある種の「実行」コマンドはおそらく単一のプロセッサ/インスタンスから実行する必要があるということです。では、それを機能させ、メインプログラムに提供されたすべてのプロセッサを並列実行可能ファイルに使用させるにはどうすればよいでしょうか? もし可能ならば。
p/s/私はここでスタックオーバーフローで同様の質問を見ましたが、それが可能かどうかについて明確な答えはありません。