假設我在5個節點上運行MPI程序,它將運行50次模擬。但是,模擬可能需要大量不同的時間。如果我有一組初始條件,比如ic1,ic2,... ic50,當一個節點/進程完成一個模擬時,我希望它使用下一個(尚未使用的)初始條件集來運行新的模擬。我最初的想法是使用MPI_Bcast或MPI_Gather s.t.所有節點都有一個int,它持有下一個要運行的索引,並在開始新的模擬之前對其進行更新。這是一個合理的想法/是否有其他和/或更好的解決方案?在MPI中跟蹤全局索引
0
A
回答
2
您需要共享工作隊列。有很多方法可以做到這一點。最簡單的方法是指定一個mpi等級爲「主」,其他等級爲「工人」。工作人員要求主人爲一個工作單位(您的初始條件之一),去工作,然後完成後請求主人爲新的工作單位。這裏有一些額外的細節(它說OpenMPI,但沒有關於OpenMPI的具體內容):Non-blocking data sharing through OpenMPI
有一個名爲ADLB(http://www.mcs.anl.gov/project/adlb-asynchronous-dynamic-load-balancer)的項目,它是類固醇上的工作隊列。可能(肯定)是5節點作業的矯枉過正,但對於5,000節點作業可能有意義。
您可以使用RMA共享內存並使用它來跟蹤索引。如果擁有RMA窗口的進程本身正忙於在工作單元上進行計算,則對請求做出響應可能會稍微慢一些,但是您不需要將一個MPI進程作爲主進程進行燒寫。
您可以使用MPI共享文件指針例程在磁盤上保留工作隊列。我通常對MPI共享文件指針例程很不滿意,但在這種情況下,相對於CPU工作量,I/O很小(讀取一個初始條件),那就沒問題。
相關問題
- 1. 在LLVM中跟蹤全局定義
- 2. libspotify API:跟蹤索引
- 3. 如何跟蹤UICollectionView索引
- 4. 全局變量的依賴性跟蹤
- 5. Python,如何跟蹤全局變量
- 6. 如何跟蹤Array.sliding中的索引
- 7. Git跟蹤,未跟蹤,上演,索引的含義?
- 8. 檢索異常全堆棧跟蹤
- 9. 如何在Javascript中跟蹤/保留全局名稱空間
- 10. 如何在Perl中跟蹤全局變量?
- 11. MPI和全局變量
- 12. MPI全局執行時間
- 13. 全局變量和MPI
- 14. MPI及其全局變量
- 15. Python跟蹤,不顯示索引
- 16. 如何跟蹤輔助索引編號
- 17. 分類時跟蹤向量對索引
- 18. 搜索引擎跟蹤斜線問題
- 19. Laravel跟蹤ElasticSearch,如何重置索引?
- 20. UIPageViewController無法跟蹤頁面索引
- 21. Gtags索引全局變量
- 22. MPI處理器中MPI_Request是否全局?
- 23. 引發ArgumentError在ImagesController#索引,但appliaction跟蹤是空的
- 24. 訪問全局變量以跟蹤多處理中的狀態
- 25. 如何跟蹤python中的全局變量
- 26. 在python中跟蹤索引的正確方法是什麼?
- 27. 在Haskell中使用匿名函數跟蹤列表索引
- 28. 在javascript中使用shuffle算法跟蹤索引
- 29. 在apache中禁用跟蹤和跟蹤
- 30. 在ng-repeat中跟蹤未跟蹤
從這個描述中不太清楚你的目標是什麼。你能用一些簡短的僞代碼勾畫出來嗎? – 2014-10-08 04:19:58