Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mpi在Windows中的使用_C++_Parallel Processing_Mpi - Fatal编程技术网

C++ 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实现中(我已经使用过),整个程序都在每个进程上从头

我在windows中安装了mpi,可以使用它的库。问题是,在windows中,当我编写

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;  
}