我想知道 Boost.MPI 中提供的 MPI 功能的骨架和内容实现有什么好处。据我了解,只有当消息具有任意类型的固定大小并且该消息需要以不同的内容多次发送时,骨架和内容方法才有用。
因此,skeleton&content 在以下情况下不起作用:
std::list<int> l;
// Exchange Skeleton mpi::skeleton(l)
// Send Content mpi::content(l) (but modify the size of the list, so sending once 10 element and in the next time 2 elements, for example)
Boost 通过序列化数据并在另一端反序列化来发送内容。(我假设它会发送 MPI_BYTE 类型的数据并以某种方式处理带有标志的字节序?)
两个问题:
- 为什么需要发送任何可序列化类型的骨架(也可以是序列化包装器对象):Boost 是否可以不只是反序列化(给定提供反序列化的相同序列化包装器)接收到的数据而不需要骨架?
所以 skelton&content 方法在列表的动态大小等方面是有益的。在后续调用中不需要再次序列化。所以真正的好处是使用骨架和内容方法的序列化消息(发送内容)更小。如果消息被发送多次,这是有益的。
所以总而言之,如果消息是高度动态的(形状变化)并且只发送一条消息,则不应应用骨架和内容。
那是对的吗?