python 使用mpi4py?进行预处理和后处理

2wnc66cl  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(121)

我想写一个脚本,看起来像下面这样:

Execute a pre-processing function (only 1 process should do this; all others wait until this is done)
--------
All processes then do the main function in parallel
--------
Finally, after all processes finish, execute a post-processing function

我试过:

from mpi4py import MPI
*pre-processing
MPI.Init()
*parallel script
MPI.Finalize()
*post-processing

但所有内核都在运行脚本的所有部分

k4ymrczo

k4ymrczo1#

MPI不派生线程:每个内核运行整个程序。MPI_Init不是并行区域的开始:它会做一些诸如缓冲区分配、发现网络之类的事情。
因此,init之前和finalize之后的所有内容都由每个进程执行。
解决方案:将MPI_Init一直移到顶部,然后执行if (myrank==0)子句中的单进程内容。

相关问题