17th Jolt大奖得主 Intel Threading Building Blocks 简介

Simore 2007-11-28 12:14:14
之前说准备写点TBB的内容,就先做个简介吧:

TBB,Threading Building Blocks,是Intel推出的针对多线程并行开发的一个library,open source,遵循GPLv2,官方网址:http://threadingbuildingblocks.org/,Intel的网站在:http://www.intel.com/software/products/tbb

TBB 获得过 17 届 Jolt Productivity Awards,是一套 C++ 模板库,和直接利用 OS API 写程序的 raw thread 比,在并行编程方面提供了适当的抽象,当然还包括更多其他内容,比如 task 概念,常用算法的成熟实现,自动负载均衡特性还有不绑定 CPU 数量的灵活的可扩展性等等。

TBB可以在Windows,Linux和MacX上运行,支持Intel C++、VC 7/8和gcc编译器,这都是由它的特性决定的,因为它不是对现有语言的扩展(不像OpenMP),而是在现有语言基础上对并行开发概念的封装和实现,底层依然依赖与raw thread的支持。

关于raw thread/OpenMP/TBB有个简单的比较:

1、raw thread最大的问题就在于不可移植和开发难度,ACE等已经做了很多尝试想通过wrapper的方式解决移植性问题,但并不能解决开发难度的问题(而且移植性是否真的很好的解决了也由不同的声音);但raw thread最大的好处当然是其灵活性啦,利用windows thread或者pthread实现复杂的线程同步和并发曾经是guru们炫耀的技能之一^_^

2、OpenMP,嗯,个人来看,确实也是个不错的东西,它支持不同平台,不同编译器(目前c/c++,fortran),但OpenMP更多的适合于flat do-loop centric parallelism,另外,用惯了C++的人曾经有过调侃:OpenMP is great if you have Fortran code, or C code that looks like Fortran, or C++ that looks like Fortran^_^ OpenMP的代码确实很flat,而且,代码里一堆的#pragma似乎也不满足C++ developer的审美习惯

3、OK,这样就直到TBB确实就是for C++ developer准备的了,它没有其它语言的support,而且基于task概念的封装会使并行更易于理解,当然前提是你先学会TBB^_^ 当然,generic programming的style会让很多C++ fans喜欢,open source更是可以读读,看看别人是怎样把raw thread变成抽象层的概念的~~~

这是Intel给出的TBB/OpenMP/Raw thread的比较,权作参考:


Capabilities Comparison


Intel® TBB
OpenMP
Threads

Task level parallelism
+
+
-

Data decomposition support
+
+
-

Complex parallel patterns (non-loops)
+
-
-

Broadly applicable generic parallel patterns
+
-
-

Scalable nested parallelism support
+
-
-

Built-in load balancing
+
+
-

Affinity support
-
+
+

Static scheduling
-
+
-

Concurrent data structures
+
-
-

Scalable memory allocator
+
-
-

I/O dominated tasks
-
-
+

User-level synchronization primitives
+
+
-

Compiler support is not required
+
-
+

Cross OS support
+
+
-

转自:Zou Fei's BLOG
...全文
219 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jump2003 2010-12-01
  • 打赏
  • 举报
回复
最近在学习TBB,有兴趣的可以加我: QQ910819634
mengmengswat 2007-12-06
  • 打赏
  • 举报
回复
好东西~现在Intel的软件都已经支持MAC系统了,很全面的. 感觉上所有其软件产品都配套使用的话效果会更好.

566

社区成员

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

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