如何在C++中使用MPI_Send()
或MPI_Bcast()
來傳輸我的類的實例或std::vector
?在C++中使用MPI_Send()或MPI_Bcast發送類instaces
3
A
回答
3
你不能簡單地因爲被C調用既不MPI_Send()
也不MPI_Bcast()
瞭解這些類的結構傳送隨機類的實例。可以發送的std::vector
實例(因爲它使用連續的存儲器存儲)通過提供&vector[0]
到MPI_Send()
但接收操作應該然後在幾個步驟來實現:MPI_Probe()
- >獲得的消息中的元素數 - >調整矢量實例 - >將MPI_Recv()
納入調整大小的實例。對於所有其他情況下,你應該使用類似Boost.MPI或者你應該使用MPI_Pack()
和MPI_Unpack()
序列化並deserialise你的類實例和MPI消息。
1
MPI不會對對象進行操作,它的運行內存位置。所以要從你自己的班級發送一個對象,你需要知道班級的內存佈局。然後您可以使用它來構建MPI數據類型。有關MPI規範(第4章)的整章專門討論如何執行此操作。基本前提是您可以基於標準MPI類型構建數據類型,並按照指定的內存佈局進行排列。一旦這種類型被構建並提交,您就可以在MPI操作中使用它。
2
相關問題
- 1. MPI_Bcast或MPI_Send的探測器
- 2. MPI_BCAST和MPI_SEND之間的區別
- 3. 使用MPI_Send發送多列矩陣
- 4. 通過MPI_Bcast發送列
- 5. 在一個pthread中使用MPI_Send C
- 6. MPI掛在MPI_Send上發送大消息
- 7. 使用MPI_Bcast發送動態大小的動態數組
- 8. 通過MPI_Send發送MPI_Comm處理程序
- 9. MPI發送消息與MPI_Send和MPI_Reduce
- 10. MPI_Send發送數組或數組內容的地址
- 11. 使用MPI_SEND與MPI_Comm_spawn
- 12. 爲什麼在MPI_Send中使用MPI_Wait?
- 13. 在Windows中使用C發送HTTP GET或POST請求
- 14. 如何在C++中使用yahoo或gmail發送電子郵件
- 15. 發送使用C#
- 16. 使用Twilio在C#中發送短信
- 17. 在C++中使用HTTPS發送請求
- 18. 在C#中使用ftp發送文件
- 19. MPI_Send或MPI_Recv的限制?
- 20. MPI_Bcast使用線程(OpenMP的)在MPI
- 21. 發送類型爲C++類
- 22. MPI_Bcast在if語句中?
- 23. 接收者和發送者之間的MPI_Bcast同步
- 24. 隱含的發送者和接收者同步MPI_BCAST?
- 25. MPI_Bcast掛
- 26. 在C#中的不同類之間發送數據(推送中)
- 27. 用C#HttpWebRequest或WebClient發送HTTP請求?
- 28. 使用C#發送郵件
- 29. 如何發送使用C#
- 30. C#使用System.Threading發送SMTP
你嘗試過什麼嗎? – Sleepyhead
LMGTFY http://stackoverflow.com/questions/18746553/sending-large-stdvector-using-mpi-send-and-mpi-recv-doesnt-complete – Sleepyhead