C++ Mpi在Windows中的使用
我在windows中安装了mpi,可以使用它的库。问题是,在windows中,当我编写C++ Mpi在Windows中的使用,c++,parallel-processing,mpi,C++,Parallel Processing,Mpi,我在windows中安装了mpi,可以使用它的库。问题是,在windows中,当我编写 mpiexec -n 4 proj.exe 在命令提示下,它不会执行正确的操作。4个不同的进程分别使用整个代码文件。它们的行为不像只在MPI_Init和MPI_Finalize行中工作的并行进程。我如何解决这个问题?是否不可能在Windows中使用MPI 注意:我使用的是devc++根据您所说的,MPI正在正确运行——相反,您的假设是不正确的。在每个MPI实现中(我已经使用过),整个程序都在每个进程上从头
mpiexec -n 4 proj.exe
在命令提示下,它不会执行正确的操作。4个不同的进程分别使用整个代码文件。它们的行为不像只在MPI_Init和MPI_Finalize行中工作的并行进程。我如何解决这个问题?是否不可能在Windows中使用MPI
注意:我使用的是devc++根据您所说的,MPI正在正确运行——相反,您的假设是不正确的。在每个MPI实现中(我已经使用过),整个程序都在每个进程上从头到尾运行。MPI_Init和MPI_Finalize函数需要为每个进程设置和分解MPI结构,但它们不指定并行执行的开始和结束。并行段的开始是main中的第一条指令,结束是最终返回 一个好的“模板”程序可以满足您的需求(也可以在中得到回答):
另外,如果你真的发布了一些源代码,也许我们可以在如何让你的MPI程序正确运行方面提供更多帮助。仅根据您的简要描述,您可能正在尝试使用共享内存进行通信(根据设计,在MPI中这是行不通的)。
int main(int argc, char *argv[]) {
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
if (myid == 0) { // Do the serial part on a single MPI thread
printf("Performing serial computation on cpu %d\n", myid);
PreParallelWork();
}
ParallelWork(); // Every MPI thread will run the parallel work
if (myid == 0) { // Do the final serial part on a single MPI thread
printf("Performing the final serial computation on cpu %d\n", myid);
PostParallelWork();
}
MPI_Finalize();
return 0;
}