Intel Threading Building Blocks
2007-11-11 20:27
465 查看
之前说准备写点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
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 | + | + | - |
相关文章推荐
- Intel Threading Building Blocks :基本算法参考及使用
- Intel Threading Building Blocks 编程指南 : 内存分配
- Intel Threading Building Blocks 编程指南:原子操作
- TBB(intel threading building blocks)内存分配算法(一)
- Intel Threading Building Blocks 编程指南:简单循环的并行化
- Intel Threading Building Blocks技术文章
- Intel Threading Building Blocks 编程指南:异常与终止
- Compare Windows* threads, OpenMP*, Intel® Threading Building Blocks for parallel programming
- TBB(Intel Threading Building Blocks)学习笔记
- intel Threading Building Blocks 入门 (基本算法)
- Intel Threading Building Blocks 编程指南 : 内存分配
- Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism [ILLUSTRATED]
- [thread] Intel® Threading Building Blocks Integration Now Available to Unreal Engine 3 Licensees
- Intel Threading Building Blocks 编程指南:异常与终止
- Intel Threading Building Blocks 编程指南:互斥
- Intel Thread Building Blocks (TBB) 入门篇
- Intel Thread Building Blocks (TBB) 的介绍
- Threading Building Blocks
- Intel Thread Building Blocks (TBB) 的介绍
- Intel Thread Building Blocks (TBB) 的介绍