Intel Threading Building Blocks

之前说准备写点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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值