我想在 MPI 中使用广播发送两个数组:double A
和 int B
(我使用的是 C++)。通常,communicator.Bcast
block 用于读者,但不用于作者。所以,如果我这样做了:
communicator.Bcast(A, a_len, ...)
communicator.Bcast(B, b_len, ...)
某些进程可能会首先检索第二条消息,然后事情就会变得一团糟。
我想知道,对于这个问题,什么是好的、干净的解决方案?我应该使用派生数据类型/MPI_Pack 吗?看起来很难看。我可以以某种方式强制在广播中使用 TAG 吗?
最佳答案
MPI 保证对通信器的集体调用按照它们发出的顺序进行处理。所以不,读者不会首先检索第二条消息——那个例子是保存。
仅供引用,MPI C++ 接口(interface)已被弃用 - 最好直接将 C API 用于新代码。
关于c++ - 两个MPI依次广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514482/