2011-11-17 88 views
0

有沒有方法可以廣播一個對象,或者我必須以其他方式來播放它所包含的所有值?使用MPI廣播對象

+0

什麼對象?它是否只包含POD(int,char,float)並且沒有指針? – osgx

回答

0

我將假定C++語言只是具有對象和定義的MPI接口的語言。如果我錯了,就說。對於其他語言的基本原理是這樣的。基本上,如果您可以執行對象的memcpy或將其存儲到文件(write)中並從文件(read)中讀取它,則可以執行存儲對象的內存的MPI_Bcast。

爲了能夠這樣做,你的目標應該

  • 與只有POD類型(普通的舊數據:字符,整數,浮點,雙)組成或其他對象具有相同屬性
  • 有它內部沒有指針,因爲在發送到另一個MPI進程後,內存將與發送過程中的內存不一樣。

如果你的對象比較複雜,它應該在接收之前發送和反序列化(解組)之前序列化(編組)到某個緩衝區。您可以使用boost serialization - 但即使這樣的變體不具有普遍性(有關於如何對象可以組織可序列限制)

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