这是关于 MPI 的一个问题。我需要两个处理器来不断修改一个变量,并且我希望两个处理器都可以访问具有最新值的变量。
from mpi4py import MPI
from time import sleep
comm = MPI.COMM_WORLD
rank = comm.rank
assert comm.size == 2
msg = 0
sec = 10
if comm.rank == 0:
for i in range(sec):
print msg
sleep(1)
msg = comm.bcast(msg,root = 1)
else:
for i in range(sec*2):
msg += 1
sleep(0.5)
comm.bcast(msg,root = 1)
所以我期待程序打印出类似的东西:0 2 4 ...
但程序结果打印:0 1 2 3 4 5 6 7 8 9
我很好奇 mpi4py 中是否有一种机制使得变量msg由两个处理器共享?也就是说,每当处理器 1 修改msg时,新值立即可供处理器 0 使用。换句话说,我希望处理器 0 访问msg的最新值,而不是等待每次更改处理器 1在msg上生成。