秩數是否有任何泛化的數字?對於我的代碼,我想創建MPI :: COMM_WORLD的分層分解。假設我們使用16個線程。我使用MPI :: COMM_WORLD.Split來創建4個具有4個等級的傳播者。現在是否有MPI功能爲相應的四個組提供一些獨特的ID?將MPI等級數推廣到MPI組?
3
A
回答
5
那麼,你仍然可以參考每個進程的原始排名MPI_COMM_WORLD
。您還可以完全控制每個進程通過color
和key
參數MPI_Comm_split()
在其新通訊器中收到的排名。這是足夠的信息來創建舊隊伍和新隊伍/隊伍之間的映射。
1
如果你不喜歡@ suszterpatt的答案(我這樣做),你總是可能會濫用笛卡爾傳播者,並假裝傳播者中索引(2,3)處的流程是分層分解的第2組中的流程3。
但是不要讀這個,並帶走我推薦這種濫用的印象,這只是一個想法。
相關問題
- 1. MPI等級過程
- 2. MPI等級確定
- 3. MPI廣播二維數組
- 4. 在MPI中廣播(共享)數組
- 5. MPI分配數組
- 6. 使用MPI廣播對象
- 7. 同時MPI若干廣播
- 8. 廣播消息退出(MPI)
- 9. 用於python廣播的MPI
- 10. MPI廣播2d陣列
- 11. MPI廣播中的錯誤
- 12. MPI - 異步廣播/收集
- 13. MPI:廣播長整型
- 14. 將MKL鏈接到MPI
- 15. MPI素數
- 16. MPI線程數
- 17. MPI發送數組的數組
- 18. 諧波級數和C++ MPI和OpenMP
- 19. 整數轉換等級和推廣
- 20. 從OpenMP的到MPI
- 21. 打開MPI廣播延遲測量
- 22. MPI虛擬圖形拓撲廣播
- 23. 兩個MPI廣播一個接一個
- 24. MPI自動類型的廣播變量
- 25. 在MPI中廣播更好的價值
- 26. 在MPI
- 27. MPI +函數指針?
- 28. mpi收集數據
- 29. MPI內核數量
- 30. 找不到cabal在Windows上找到haskell-mpi的mpi庫
你說得對,我添加到MPI_Comm_split()中的信息足以計算出我所要求的信息。但在10,000個核心的情況下做這件事並不是微不足道的。這就是我直接在MPI基礎上詢問是否有支持這樣做的原因。 – 2012-04-25 13:28:38
似乎對我來說很簡單。如果你有N * M個進程需要分成M個N組,那麼每個進程都會用'rank/N'顏色(和可選的'rank%N'鍵)調用'Split()'。這會將0..N-1排入組0,N..2 * N-1排入組1,依此類推,並保留每個組內進程的原始排序。在'j'組中排名爲'i'的進程是'MPI_COMM_WORLD'中排名爲'j * N + i'的進程。 – suszterpatt 2012-04-25 13:34:50