利用Intel线程构建模块(TBB)发挥多内核架构优势

Simore 2007-11-28 12:17:42
在对称多处理(SMP)环境下如何最有效地利用多个处理器核是很复杂的问题。Intel的线程构建模块(Thread Building Blocks,TBB)正是为解决这一挑战而设计的。

TBB基于C++模板,该模板提供一套适用于编写高效并行算法的线程安全并行控制和数据对象。与诸如OpenMP等方法相比,这些类模板使映射for和while等常规循环构件以及类似向量和队列等数据结构变得简单,从而可以在不需要编程人员进行外在线程管理的情况下实现TBB对象的并行运行。

TBB不用创建过多的线程,针对每一个逻辑核它只创建一个线程。(一个超线程核可以支持两个或两个以上的逻辑线程)。每一个工作线程管理一个工作队列。主线程创建类似向量的对象,并在此向量上运行例如扫描所有入口等操作。

这样,该操作将成为程序代码的一部分,被多个程序块引用,以扫描向量,每一个模块都处理该向量的一个子集,这些程序模块分布于工作线程的工作队列中,空闲的工作线程从队列里提取下一个程序模块,对其数据模块里的工作进行处理。

这种方法非常类似于分布式Web服务器,如J2EE(Java 2企业版),不同之处在于,J2EE用外来Web请求填充队列。一般来说,TBB更加偏重数据结构驱动,而J2EE则偏重于I/O。同样,J2EE线程的分配一般基于预计的I/O负荷与系统运行核的数量关系。原因是,J2EE线程常常必须等待其它操作,而TBB线程则是处理程序块时,可以使用所有数据。

Thread Checker和Thread Profiler属于带64位支持的Linux辅助产品,这些工具可以与TBB一起使用,对任何多线程应用同样有效。Thread Checker可以自动发现如竞争条件和死锁。新的命令行支持对批处理模式和回归测试都很理想。Thread Profiler提供的TBB信息形式更加抽象,与TBB的源抽象相当。

...全文
230 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧