两个MPI一个接一个地播放

syg*_*ygi 1 c++ broadcast mpi

我想发送两个数组:double Aint B在MPI中使用广播(我正在使用C++).通常,communicator.Bcast读者的块,但不是作家.所以,如果我做了:

communicator.Bcast(A, a_len, ...)
communicator.Bcast(B, b_len, ...)
Run Code Online (Sandbox Code Playgroud)

可能会发生某些进程首先检索第二条消息并且事情会搞乱.

我想知道,对于那个问题,什么是好的,干净的解决方案?我应该使用派生数据类型/ MPI_Pack吗?看起来很难看.我可以以某种方式强制广播中使用TAG吗?

小智 5

MPI保证对通信器的集体呼叫按照发布的顺序进行处理.所以不,读者不会首先检索第二条消息 - 例如保存.

仅供参考,MPI C++接口已被弃用 - 最好直接将C API用于新代码.