我在mpi4py執行該程序的麻煩。我的目標是將特定數據發送到特定節點(這就是爲什麼我不使用分散)。之後,處理每個節點中的數據,最後收集所有結果。發送特定的數據每個節點,並收集結果MPI的Python
很顯然,我的程序不明白如何收集數據,從不同的節點(也許是因爲收集的設計與分散的工作)。我試着用comm.send()發送日期,並用comm.gather()進行收集。當我執行程序時,它會永遠運行,而我看不到任何結果。
你能幫我找出如何從不同的節點收集的數據?還有其他的功能嗎?我可能需要在節點上循環嗎?
from mpi4py import MPI
import numpy as np
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
if rank == 0:
data = list(np.arange(size) + 1)
for i in range(size):
comm.send(data[i], dest=i)
else:
data = comm.recv(source=0)
data += 1
print("rank", rank, "has data", data)
newData = comm.gather(data, root = 0)
if rank == 0:
print("master collected", newData)
在我的情況下,它不會永遠運行,我會看到結果。 – Shibli