我想知道如果在MPI程序中指定有線程支持,所有線程都會進行MPI :: Bcast調用(使得在調用中,發送程序只支持一個線程),這是由所有其他線程接收的,還是僅僅來自每個進程的一個線程(最快)?帶線程支持和Bcast調用的MPI
1
A
回答
3
常見的MPI實現處理進程之間的通信。支持線程的實現只允許多個線程進行一些或全部MPI調用,而不僅僅是一個。調用MPI_Bcast
的進程中的每個T
線程表示該進程已調用MPI_Bcast
T次,並且期望通信器上的所有其他等級都會執行相同的操作。
1
根據MPI執行中的線程支持級別(請檢查,MPI中的線程支持非常簡單),每個進程只進行一次MPI調用。
1
要添加到Novelocrat給出了答案:
計算的MPI的基本單位是「等級」。在MPI的大多數(全部)有趣的實現中,等級是一個過程。一個進程中的所有線程共享相同的等級ID。
MPI標準支持多級別的線程並行:MPI_THREAD_SINGLE,MPI_THREAD_FUNNELED,MPI_THREAD_SERIALIZED和MPI_THREAD_MULTIPLE。
其中,只有MPI_THREAD_MULTILE實際上有多個線程將重疊調用插入到MPI庫中。另外三種情況是應用程序聲稱Rank可以被視爲「單線程」。欲瞭解更多信息,請參閱MPI Standard entry on MPI_INIT_THREAD。
相關問題
- 1. MPI Bcast和進程數
- 2. MPI和線程
- 3. 當使用多個進程時MPI Bcast附近的Seg故障
- 4. 用MPI支持編譯Valgrind
- 5. 從多線程調用MPI功能
- 6. 如何在MPI中使用未阻止的Bcast?
- 7. 調用從MPI進程調用MPI進程的腳本
- 8. 帶有齒輪的Gmail離線支持
- 9. JVM綠色線程支持和操作系統本地線程支持
- 10. mpi和進程調度
- 11. Android不支持的線程
- 12. 支持多線程的arraylist
- 13. DIH支持調用程序
- 14. RestKit iOS應用程序的在線和離線支持
- 15. Gwt和html5多線程/ WebGL支持
- 16. 不支持棄用的線程方法不支持
- 17. 調整由Spring容器的任務支持使用的線程
- 18. P線程在MPI
- 19. 作業線程 - MPI
- 20. 在新線程中調用支持CUDA的庫
- 21. Libevent多線程支持
- 22. Adobe Alchemy線程支持
- 23. Clisp支持線程嗎?
- 24. Android支持線程嗎?
- 25. Webservice支持多線程?
- 26. COM多線程支持
- 27. 如何讓CMake構建一個支持MPI的Fortran程序?
- 28. 支持java的SSH庫很好的支持多線程!
- 29. 帶調用限制的單線程ScheduledThreadPoolExecutor
- 30. 使用帶下劃線的TypeScript類型支持
新奇事物,這是有道理的。因此,來自不同進程的所有線程都會調用Bcast,這是一場重大的災難。感謝你的回答。 – SwatchPuppy
Novelocrat,我還有一個問題,想象在啓用多線程支持的情況下,在同一個進程中有兩個線程,他們可以使用MPI_Send和MPI_Recv在它們之間進行通信,還是會導致死鎖? – SwatchPuppy
一個進程可能可能使用Isend/Irecv與自己進行通信,但那會有點愚蠢。請記住,你的流程中的所有線程仍然是同一個MPI級別的一部分。此外,允許「MPI_Send」阻塞,直到匹配的接收完成。如果它本身就是這樣,並且沒有發佈接收,那就是僵局。 – Novelocrat