我想在MPI(Java實現)中編寫一個小程序 聲明變量x(雙變量)。線程嘗試修改變量(比如說隨機修改)。當一個線程找到一個小於舊值的X的新值時,就向其他線程進行廣播,以便它們可以更新其變量的值。我已經看過了MPI中的Bcast函數。 ..但是在所有的例子中,它被所有的線程調用,不管變量是否被修改。在MPI中廣播更好的價值
1
A
回答
2
這是在多線程環境(例如OpenMP或Java線程)中很容易實現的場景之一,很難在MPI中無法高效實現。通常的做法是以這樣一種方式重構算法,即每步執行N
步驟(N
可能等於1,但由於通信開銷可能非常低效),然後使用Intracomm.Allreduce
與reduce操作設置爲MPI.MIN
。每個進程提供自己的最小值,並減少返回全局最小值。如果您還想知道擁有全局最小值的進程等級,則應該使用MPI.MINLOC
。
如果您嘗試實施並行遺傳優化,有some C++ libraries可能會給你一個靈感。
+0
我看到,在討論多機器/分佈式系統時,這總是一個問題。是的,你的想法是好的,但正如你所說,由於N = 1時的通信開銷將會是低效的,如果N> 1,它將不會被優化得足夠多。 感謝這些用於並行遺傳優化的C++庫。 ..我的領域並不關注於此,但閱讀新事物總是很有趣的 – 2014-09-23 19:15:10
相關問題
- 1. 用於python廣播的MPI
- 2. 使用MPI廣播對象
- 3. MPI廣播二維數組
- 4. 同時MPI若干廣播
- 5. 獲取廣播組的價值
- 6. MPI自動類型的廣播變量
- 7. 兩個MPI廣播一個接一個
- 8. MPI虛擬圖形拓撲廣播
- 9. 起價廣播接收器
- 10. 廣播不更新電池更換值
- 11. 傳播價值
- 12. 將MPI等級數推廣到MPI組?
- 13. MPI減少和廣播工作,但導致未來的返回值失敗
- 14. 在iframe中獲取廣播值
- 15. MPI:所有以一個維陣列上的所有廣播
- 16. 最好的Django網絡廣播/視頻
- 17. C#更好的壓縮遠程桌面廣播應用程序
- 18. 在Java中的UDP廣播
- 19. 更新RDD中的廣播變量
- 20. Javascript從彈出式輸入廣播級獲得價值
- 21. 無法從輸入類型無線電廣播獲得價值
- 22. 使用jquery從廣播組獲得價值
- 23. Facebook廣告 - 價值表示
- 24. 如何使用pyCUDA通過MPI進行廣播?
- 25. MPI - 向所有進程廣播printf東西
- 26. 簡單MPI流水線環廣播代碼死鎖
- 27. 傳播價值在Excel單元格中
- 28. C中的廣播
- 29. 廣播中的R
- 30. 在numpy廣播
沒錯,這就是廣播如何工作 - 一個傳播者的所有過程都參與其中。在進程交換消息之前,一個進程不知道另一個進程的變量值已經改變。您可能需要查看其他集合,例如'mpi_gather','mpi_scatter'或'mpi_allgather'。還有其他人。 – 2014-09-23 17:43:40