Мне нужно выполнить операцию, которая может быть выполнена только мастер-процессом. Рабы не могут ничего сделать, кроме как дождаться окончания мастера. Поэтому я сделал следующее (псевдокод, я обернуть большинство процедур, так что я бы трудное время придумывает с фактическим кодом MPI. Я надеюсь, что комментарии достаточно четко объяснять, что я делаю)Могу ли я использовать MPI_Bcast для синхронизации?
def routine():
if not isMaster():
# I am a slave. I just sit here, waiting for the master to finish.
# wait for a string from the master explaining the state
string = MPI_Bcast("whatever", 0)
return (string == "SUCCESS")
<master does its long running business>
string = MPI_Bcast("SUCCESS", 0) # tell the slaves it worked fine.
return True
ли эта работа, или я неправильно использую трансляцию?
Просто убедитесь, что корневой ранг в 'MPI_Bcast' соответствует тому, который используется в предикате' isMaster() '. –