【问题标题】:Why doesn't MPI supply serialization interface?为什么 MPI 不提供序列化接口?
【发布时间】:2012-05-23 02:11:56
【问题描述】:

MPI 是消息传递接口,但是当你想发送一个对象时,你必须在 MPI_Send 之前序列化。

MPI 向开发者公开了通信功能,并提供了大量的接口来满足它。但是为什么 MPI 不提供序列化呢?

我知道序列化不属于MPI,不知道序列化技术还有什么值得优化的地方?

谢谢!

【问题讨论】:

  • 正如您已经提到的,序列化是您在更高级别执行的操作,不属于 MPI 主要处理消息传递。此外,MPI 实现本质上是 C 库(带有 C++/Fortran 绑定),因此没有类的概念,因此序列化不适用于 MPI 标准。

标签: c++ performance serialization mpi protocol-buffers


【解决方案1】:

MPI 是一种独立于平台的消息传递标准,它的操作越简单,它的可移植性就越高。由于这种简单性,大多数 MPI 库都支持异构架构 - 您可以在具有不同内部数据表示甚至不同 ABI 的 16、32 和 64 位机器的混合集群上运行应用程序。

C++ 对象的序列化绝不简单,也不可移植。您始终可以使用您最喜欢的 C++ 序列化库并使用 MPI 消息交换它生成的 blob。 MPI 中甚至还有一种特殊类型可以按原样发送二进制数据 - MPI_BYTE

此外,即将发布的 MPI 标准 3.0 版中将完全删除对 C++ 的支持,并鼓励 C++ 程序员改用 C 函数。

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2017-10-09
    • 2010-09-17
    • 2016-05-27
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多