使用Boost.MPI仅同步部分c ++向量

时间:2010-09-23 22:49:34

标签: c++ serialization boost mpi

我有一个std :: vector(让我们称之为“data_vector”),我希望同步各个处理器的各个部分。即,我想将该向量中任意索引的值发送到其他处理器。

如果我想发送整个向量,我可以使用Boost的send()函数轻松完成此操作,但我真的只需要发送一小部分。现在我有一个单独的向量(让我们称之为“idx_vector”),其中包含我要发送的data_vector索引,但我可以根据需要更改格式。

最好的方法是什么?我不想迭代并分别同步每个索引。我可以将所有值复制到一个连续的向量中并同步,然后重建它,但我想知道Boost是否有更好的方法。使用包含指向data_vector位置指针的idx_vector的Boost.serialization是否有效?我该怎么做?

1 个答案:

答案 0 :(得分:0)

序列化应该可行,因为MPI实现将发送一个字节数组。执行此操作的MPI方法是定义一个MPI数据类型,用于选择要发送的索引,在这种情况下,MPI_Type_indexed可能是正确的选项。