我一直在用python进行分布式多处理,并且开发了使用域的块分解的2D热方程求解器。此代码在C和Fortran中的其他MPI实现的性能相同(就正确答案而言)。
但是,在我的机器上256x256网格点和4个进程中,我看不到任何速度提高。相比之下,C实现(与mpicc编译)使我获得了预期的不错的速度。奇怪的是,当我将此代码部署在不同机器上(具有相同数量的进程)时-我获得了正确的速度。可以找到此代码的mpi4py和串行版本here。我认为这可能是由于缓存大小限制所致,但在网格点数量较少的情况下,我也得到了类似的趋势。我缺少对mpi4py的某种需求,这会导致速度变慢?