我有一个生成系统矩阵的Python脚本。这是在一个处理器上连续发生的,在一个进程中,没有任何并行处理。我也有解算器代码。代码使用MPI在许多处理器上运行。Python和MPI进程之间的内存共享策略
目前,Python脚本创建矩阵,将其写入文件,通过subprocess.call(["mpirun ....."])
调用解算器,解算器从文件中读取矩阵,解析并写回文件,最后Python脚本将结果读回文件。
现在我正在寻找更有效率的东西,避免文件读/写。一个想法是启动MPI进程并在后台运行,然后通过Python和求解器之间的某种进程间通信传输数据和命令。
如何在Python中进行进程间通信?还是有更好的选择?
我想避免的是在MPI(MPI4Py)中使用Python脚本,这是因为可调试性以及并行化没有意义。
您确定文件I/O是限速步骤吗? –
'mpiexec'通常将其标准输入重定向到等级0的标准输入,而对于所有等级的标准输出则相反。只需打开一个管道到'mpiexec'命令,发送矩阵,然后读取结果。只要确保除标准输出外没有其他等级的输出。或者使用'os.mkfifo()'创建一个单独的FIFO。 –