2011-11-17 76 views
0

有没有方法可以广播一个对象,或者我必须以其他方式来播放它所包含的所有值?使用MPI广播对象

+0

什么对象?它是否只包含POD(int,char,float)并且没有指针? – osgx

回答

0

我将假定C++语言只是具有对象和定义的MPI接口的语言。如果我错了,就说。对于其他语言的基本原理是这样的。基本上,如果您可以执行对象的memcpy或将其存储到文件(write)中并从文件(read)中读取它,则可以执行存储对象的内存的MPI_Bcast。

为了能够这样做,你的目标应该

  • 与只有POD类型(普通的旧数据:字符,整数,浮点,双)组成或其他对象具有相同属性
  • 有它内部没有指针,因为在发送到另一个MPI进程后,内存将与发送过程中的内存不一样。

如果你的对象比较复杂,它应该在接收之前发送和反序列化(解组)之前序列化(编组)到某个缓冲区。您可以使用boost serialization - 但即使这样的变体不具有普遍性(有关于如何对象可以组织可序列限制)

PS升压系列化集成到Boost.MPI