2014-05-09 71 views
0

目前,我有一個很好的C++圖形算法,用自定義結構體定義的鏈接列表或鏈接列表數組(我應該把它變成模板定義,但目前不是)。這個算法很容易分發,我想測試一下。但是,除了理解一些基本的MPI示例之外,我沒有太多的OpenMPI經驗。C++ OpenMPI linked-lists

  1. 如何在OpenMPI中使用鏈接列表?
  2. 在MPI中使用鏈接列表的常用做法是什麼?例如,當我將鏈表傳遞給其他進程並將其轉換回來時,我可以將鏈表轉換爲數組。
  3. 我需要分別處理每個鏈表類嗎?目前,我有4個獨立的鏈表。如果是這種情況,我可能更適合製作模板類定義。

感謝您的指導和一切幫助!

回答

2

裸露的接口基本上提供了一種方法來以各種方式向其他節點發送連續的內存區域,但不會遍歷鏈接列表以供您執行。

因此,您需要根據您的算法的合理性決定如何傳輸和接收數據,以優化性能。例如,您可以爲每個元素髮送一條消息,或收集其中的許多消息並進行分散。

+1

這是正確的答案;我只想補充一點,這不僅僅是一個MPI的東西。當您(OP)想要序列化全部或部分鏈表時 - 將其捆綁併發送到某處,無論是到另一個節點還是磁盤 - 您需要執行類似於選項2的操作(可能使用類似選項3避免代碼重複用於不同種類的列表)。如果不遍歷結構並編組數據,則無法將數據寫入磁盤;與MPI是同一個問題。 –