600*_*080 8 c++ multithreading pthreads intel openmp
对于多线程编程,考虑到与HPC应用程序(MPI)的组合,哪一个更好,我们可以说,在功能方面,英特尔TBB(线程构建块)是否与pthread相当?我只有开放式mp的经验,但我听说TBB和Pthread提供了比开放式mp更精细的线程控制,但TBB或TBB + OpenMP与pthread相比能提供类似的功能吗?
pthread是OS基础结构上方的瘦包装器.它允许您创建具有给定线程主函数的线程,以及一些同步原语(互斥信号量等).在Linux下,pthread是在clone(2)系统调用之上实现的.调用Windows下的等效项CreateThread.所有其他线程的东西都建立在这个基础之上.
英特尔TBB更高级别,它提供parallel_for和parallel_reduce类似于OpenMP的更高级别的结构,但实现为库而不是语言扩展.
OpenMPI在多机器分布式基础设施方面仍处于更高水平,但它非常老式且有点笨重.
我的建议是先学习pthread库,直到你完全理解它为止,然后再看看更高级别的库.