我們已經開發了一個C++算法庫,它允許用戶實現自己的數據類型以在各個算法之間共享數據(也由用戶實現)。 這可以正常工作,但我們希望在庫級別提供並行化。各個算法應該在分佈式內存機器的不同節點上並行執行。MPI如何發送和接收未知數據類型
我們決定使用MPI進行並行化,因爲它可以用於分佈式和共享內存機器而無需更改代碼。 不幸的是,我們現在要解決的問題是如何在節點之間分配用戶實現的數據類型。我們有以下問題:
- 我們不知道數據可能有多大,它甚至可能會隨着運行而改變。
- 我們不知道數據結構中有什麼數據。
- 數據量可能非常大,最高可達1GB(這應該與MPI沒有問題)
- 用戶在實現並行執行的數據類型或算法時應該看不到任何區別(對於算法實際上沒有問題)
是否有可能使用MPI在節點之間共享這些數據,或者有可用的方法,這可能更適合這類問題。 我們希望有一個至少可以在共享內存機器上工作的解決方案,但是我們希望有一個可以在共享和分佈式內存機器上無需更改代碼的解決方案。
你有沒有遇到過boost.mpi?除非我誤解,否則應該按照你的要求去做。 – Tom
Boost.mpi是一個圍繞MPI的C++包裝器,但我仍然存在這樣的問題,即:「具有映射到MPI數據類型的類型」可以被傳輸,而這可能不是這種情況,因爲我沒有定義數據類型。 – tune2fs
你問MPI是否可以發送任意數據結構,只要給它們一個指針(或類似的構造)? – PlasmaHH