2010-09-23 25 views
1

我有一個std :: vector(我們稱之爲「data_vector」),我想同步跨處理器的部分。也就是說,我想將該向量中的任意索引的值發送給其他處理器。使用Boost.MPI同步僅C++向量的一部分

如果我想發送整個矢量,我可以用Boost的send()函數輕鬆做到這一點,但我真的只需要發送它的一小部分。現在我有一個單獨的向量(我們稱之爲「idx_vector」),它包含我想發送的data_vector的索引,但是如果需要,我可以更改格式。

這樣做的最好方法是什麼?我不想遍歷並分別同步每個索引。我可以將所有值複製到一個連續的向量中,然後重新同步,但是我想知道Boost是否有更好的方法。包含指向data_vector位置的指針的idx_vector的Boost.serialization是否有效?我會怎麼做?

回答

0

序列化應該可以工作,因爲在這種情況下MPI實現將發送一個字節數組。這樣做的MPI方法是定義一個MPI數據類型來挑選你想發送的索引,在這種情況下,MPI_Type_indexed可能是正確的選擇。