掌握TBB并发编程
Table of Contents
📚 简介
🛠 TBB的工作原理
👓 TBB程序的创建
👥 TBB任务的调度
🚀 TBB的工作窃取
🎯 TBB的优势
💡 TBB库的组成
📦 TBB基本算法
🔄 TBB高级算法
🗄 TBB容器
🖇 TBB并发模式
💻 TBB支持的系统
🌐 相关链接
📑 Cilk与Cilk Plus
💿 Intel parallel studio XE
💹 Intel数据分析加速库
简介
委员会建立的线程块TBB是英特尔为了多核处理器上的并行编程而开发的C++模板库。使用TBB,计算被分解成可以并行运行的任务,该库管理和调度线程来执行这些任务。TBB程序创建、同步和销毁依赖任务的图形,并且执行任务保证图形依赖性这种方法将TBB归类为并行编程解决方案的一个系列,旨在将编程与底层机器的特定性分离。TBB实现了工作窃取以在可用处理器内的平行工作负载中平衡负载,从而增加核心利用率,因此扩展了负载。最初负载在可用处理器之间均匀分配,因为如果一个核心完成其工作,而其他核心仍然在工作队列中有大量工作,TBB将从繁忙核心之一重新分配一部分工作到空闲核心,这种动态能力将程序员与机器分开,使使用该库编写的应用程序可以扩展到利用可用的处理核心,而不需要更改源代码或可执行程序文件。2008年普林斯顿大学的研究人员对TBB中工作窃取实现进行评估,发现在32个核心系统上运行某些基准测试时,这种方式对于大量处理器来说并不是最佳选择,导致高达47%的计算时间花在调度开销上。
🛠 TBB的工作原理
Intel TBB是一个用于并行编程的组件集合,包括基本算法、高级算法以及容器等。
👓 TBB程序的创建
TBB程序创建、同步和销毁依赖任务的图形,并且执行任务保证图形依赖性。
👥 TBB任务的调度
TBB实现了工作窃取以在可用处理器内的平行工作负载中平衡负载,从而增加核心利用率,因此扩展了负载。
🚀 TBB的工作窃取
如果一个核心完成其工作,而其他核心仍然在工作队列中有大量工作,TBB将从繁忙核心之一重新分配一部分工作到空闲核心,从而使程序可以扩展到利用可用的处理核心。
🎯 TBB的优势
TBB能够使应用程序扩展到利用可用的处理核心,而不需要更改源代码或可执行程序文件。但对于大量处理器来说,并不是最佳选择,导致高达47%的计算时间花在调度开销上。
💡 TBB库的组成
TBB库的组成包括基本算法、高级算法以及容器等。
📦 TBB基本算法
TBB的基本算法包括parallel_fir、parallel_reduce、parallel_scan等。
🔄 TBB高级算法
TBB的高级算法包括parallel_while、parallel_do、parallel_pipeline、parallel_sort等。
🗄 TBB容器
TBB提供的容器包括concurrent_queue、concurrent_priority_queue、concurrent_vector、concurrent_hash_map等。
🖇 TBB并发模式
TBB实现了互斥、原子操作、任务调度等并发模式。
💻 TBB支持的系统
TBB商业版3.0支持Windows XP或更新版本,OS X 10.5.8或更高版本以及使用Visual C++ 8.0或更新版本的Linux。另外,TBB开源社区还为Solaris、PC、Xbox、QNX Neutrino和FreeBSD贡献了补丁。
相关链接
以下是与TBB相关的一些链接,包括Cilk与Cilk Plus、Intel Parallel Studio XE、Intel数据分析加速库等。
📑 Cilk与Cilk Plus
💿 Intel parallel studio XE
💹 Intel数据分析加速库