我需要執行一個for循環,該循環作用於許多數據點,每個數據點獨立於任何其他數據點。在python中展開數據並行循環,必須在MPI環境下工作
在範圍X(1,10000000) some_procedure(X)
,我需要使其運行速度更快,通過利用數據並行,但我有MPI工作。
我正在使用mpi4py,但對此我完全陌生。哪一個理論上在選項a和b之間理論上工作得更快,以及爲什麼:
a。在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進口MPI
進口SYS client_script = 'some_procedure.py' COMM = MPI.COMM_SELF.Spawn(sys.executable,ARGS = [client_script],=的MaxProcs 10000000)
非常感謝預先!!
無論你做什麼都不要啓動10^7進程,除非你有一臺擁有10^7處理器的機器。一般來說,特別是在熟悉MPI時,不要啓動比使用處理器(或內核)更多的進程。 –