我需要执行一个作用于许多数据点的 for 循环,每个数据点都独立于任何其他数据点。
对于范围内的 x (1,10000000) some_procedure(x)
我需要通过利用数据并行性使其运行得更快,但我必须使用 MPI。
我正在使用 mpi4py 但对此完全陌生。理论上哪一个应该在选项 a 和 b 之间工作得更快,以及为什么:
一个。在 foo.py 中:
from mpi4py import MPI
sendbuf=[]
root=0
comm = MPI.COMM_WORLD
if comm.rank==0:
sendbuf= range(0,10000000)
v=comm.scatter(sendbuf,root)
some_procedure(v)
然后执行以下操作:
mpiexec -np 10000000 python foo.py
湾。或从 mpi4py import MPI
import sys client_script = 'some_procedure.py' comm = MPI.COMM_SELF.Spawn(sys.executable, args=[client_script], maxprocs=10000000)
非常感谢提前!!