对于多线程编程,考虑到与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是消息传递接口的特定实现。 –