两个MPI依次广播

two MPI broadcasts one after another

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

communicator.Bcast(A, a_len, ...)
communicator.Bcast(B, b_len, ...)

有些进程可能会首先检索第二条消息,然后事情就会变得一团糟。

我想知道,什么是解决该问题的好、干净的解决方案?我应该使用派生 datatypes/MPI_Pack 吗?看起来很难看。我可以以某种方式强制在广播中使用 TAG 吗?

MPI 保证通信器上的集体调用按照它们发出的顺序进行处理。所以不,读者不会首先检索第二条消息——那个例子是保存。

仅供参考,MPI C++ 接口已被弃用 - 最好直接使用 C API 编写新代码。