對於多線程編程,考慮到與HPC應用程序(MPI)的組合,哪一個更好,我們可以說,就功能而言,英特爾®TBB(線程構建模塊)與pthread相媲美嗎?我只在開放mp方面有經驗,但我聽說TBB和Pthread提供了比開放mp更好的線程控制,但TBB或TBB + OpenMP可以提供與pthread相比相似的功能嗎?pthread vs intel TBB及其與OpenMP的關係?
7
A
回答
4
pthread是OS基礎結構之上的薄包裝。它允許你創建一個具有給定線程主函數的線程,以及一些同步原語(互斥信號量等)。在Linux下,pthread在clone(2)
系統調用之上實現。 Windows下的equivilant被稱爲CreateThread
。所有其他線程的東西都建立在這個基礎之上。
Intel TBB是較高級別的,它給出了parallel_for
和parallel_reduce
以及類似於OpenMP的類似更高級別的構造,但實現爲不是語言擴展的庫。
OpenMPI仍然是更高級別的多機分佈式基礎架構,但它非常老式,笨拙。
我的建議是先學習pthread庫,直到完全理解它爲止,然後再查看更高級別的庫。
2
TBB允許您在本機線程功能之上編寫可移植代碼,因此它使代碼在不同的操作系統體系結構上更具可移植性。我不認爲它比pthread更「高效」。
我沒有親自使用過開放式MP,但過去我曾與開發人員一起使用過開放式MP(作爲他們使用的處理器的技術專家),而且它對於某些事情似乎工作得很好,但是其他人比開發自己的代碼更難在開放mp中使用。這完全取決於你在做什麼。 openmp當然有一個好處,就是你可以在沒有openmp選項的情況下重新編譯代碼,而代碼只是按照你期望的那樣直接工作[當然不能傳播]。
使用程序線程方法,您可以更精確地控制線程上發生了什麼,是的。但是這也意味着更多的工作...
相關問題
- 1. Intel TBB vs Boost
- 2. OpenCL,TBB,OpenMP
- 3. 原子採用Intel TBB
- 4. 將OpenMP轉換爲TBB
- 5. SIFT與NCC和ZNCC的關係及其與Harris角點檢測器的關係
- 6. OpenMP和NUMA關係?
- 7. 明確鏈接intel icp openmp
- 8. Intel TBB並行循環線程ID
- 9. 如何在OS X上安裝Intel TBB?
- 10. django:渲染與render_to_response及其與csrf_token的關係
- 11. eclipse performance arm vs intel
- 12. 如何與Intel TBB並行運行兩次函數?
- 13. 實體的NSFetchedResultController及其關係
- 14. PThread vs boost :: thread?
- 15. Matlab限制TBB,但不限於OpenMP
- 16. 提供模型及其與javascript的關係模型
- 17. 直接打印轉義字符及其與ASCII表的關係
- 18. 什麼是XOauth及其與OAuth的關係?
- 19. 什麼是Datameer及其與Hadoop的關係
- 20. '自然排序'及其與compareTo()方法的關係
- 21. '語言環境'配置及其與Windows API的關係
- 22. 朋友功能及其與I/O操作員的關係
- 23. Google AppEngine:什麼是SystemServiceServlet及其與_ah目錄的關係?
- 24. Git子模塊及其與父類的關係
- 25. openmp with single thread vs openmp
- 26. Single vs OpenMP vs MPI - Fortran
- 27. Intel HD GPU vs Intel CPU性能比較
- 28. TBB數據對象是否可與OpenMP一起使用?
- 29. 探索SQLite數據庫及其關係
- 30. lib依賴關係及其順序
OpenMPI是消息傳遞接口的特定實現。 –