我想在MPI中使用广播发送两个数组:double A
和int B
(我使用C ++)。通常,communicator.Bcast
阻止读者,但不是作者。所以,如果我这样做了:
communicator.Bcast(A, a_len, ...)
communicator.Bcast(B, b_len, ...)
可能会发生某些进程首先检索第二条消息并且事情会搞乱。
我想知道,对于那个问题,什么是好的,干净的解决方案?我应该使用派生数据类型/ MPI_Pack吗?看起来很难看。我可以以某种方式强制广播中使用TAG吗?
答案 0 :(得分:5)
MPI保证对通信器的集体呼叫按照发布的顺序进行处理。所以不,读者不会首先检索第二条消息 - 例如保存。
仅供参考,不推荐使用MPI C ++接口 - 最好直接使用C API获取新代码。