我一直在使用 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 /我在stackoverflow中看到了类似的问题,但没有明确的答案是否可能。