MPI中如何發送 C++對象或結構體

1、自己把對象中需要發送/接收的元素放進一個數組中,接收之後再按照數組中的數據的順序重新建立一個對象。如果對象中只有int,bool的話,這個還比較好辦,double,string就麻煩一些。改變類的話就可能牽一髮而動全身。

2、自己定義一個結構體,把對象中需要傳輸的信息都複製進結構體中,然後MPI_Type_struct()定義一個數據類型,就可以直接用MPI收發了。不要忘了MPI_Type_commit()。

問題:使用C++時,如果對象中使用到了STL庫,採用方式2可能行不通,不確定vector的大小,map等也無法轉換。

3、【推薦】使用Boost.MPI,方便快捷,不用考慮發送對象大小,數據類型等破事,快感翻倍。但是需要先對你的類進行serialize,就是在類裏面加一段函數。使用Boost的話,STL裏面的基本數據類型(一個由int組成的list或者vector)都可以直接發,由多個自定義對象組成的list的話,serialize之後也能直接發。

方案3需要用到boost庫中的 mpi 和 serialize,注意編譯時動態鏈接對應的庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章