Intel TBB 开发指南 0 介绍

原文

Intel Threading Building Blocks(Intel TBB)是一个使用标准 ISO C++ 代码支持可扩展并行编程的库。它不需要特殊的语言或编译器。它旨在促进可扩展的数据并行编程。此外,它完全支持嵌套并行性,因此你可以从较小的并行组件构建较大的并行组件。要使用该库,你需要指定任务而不是线程,并让库以有效的方式将任务映射到线程上。
许多库接口采用泛型编程,其中接口由对类型而不是特定类型的要求定义。 C++ 标准模板库 (STL) 是泛型编程的一个例子。泛型编程使 TBB 既灵活又高效。泛型接口使你能够根据你的特定需求自定义组件。
最终结果是,TBB 使你能够比使用原始线程更方便地指定并行性,同时还可以提高性能。

优化注意
Intel 的编译器可能会也可能不会针对非 Intel 微处理器进行相同程度的优化,以进行非 Intel 微处理器独有的优化。 这些优化包括 SSE2、SSE3 和 SSSE3 指令集和其他优化。 Intel 不保证对非 Intel 制造的微处理器进行任何优化的可用性、功能或有效性。 本产品中依赖于微处理器的优化旨在与 Intel 微处理器一起使用。 某些不特定于 Intel 微体系结构的优化是为 Intel 微处理器保留的。 有关本通知涵盖的特定指令集的更多信息,请参阅适用的产品用户和参考指南。 通知修订#20110804

好处

TBB是一个库,可帮助你利用多核性能,而无需成为线程专家。 通常,你可以通过实施“开发人员指南”前面部分中解释的关键点来提高多核处理器的性能。 随着你的专业知识的增长,你可能希望深入研究高级部分所涵盖的更复杂的主题。
并行编程有多种方法,从使用平台相关的线程原语到异国情调的新语言。 TBB 的优势在于它比原始线程在更高级别上工作,而且不需要外来语言或编译器。 你可以将它与任何支持 ISO C++ 的编译器一起使用。 该库在以下方面与典型的线程包不同:

  • TBB使你能够指定逻辑并行而不是线程。 大多数线程包要求你指定线程。 直接根据线程进行编程可能会很乏味并导致程序效率低下,因为线程是接近硬件的低级、繁重的结构。 使用线程直接编程迫使你将逻辑任务有效地映射到线程上。 相比之下,TBB runtime 库以高效利用处理器资源的方式自动将逻辑并行映射到线程上。
  • TBB以线程化为目标,以提高性能。 大多数通用线程包支持许多不同类型的线程,例如图形用户界面中异步事件的线程。 因此,通用包往往是提供基础而非解决方案的低级工具。 相反,TBB 专注于并行化计算密集型工作的特定目标,提供更高级别、更简单的解决方案。
  • TBB与其他线程包兼容。 由于该库并非旨在解决所有线程问题,因此它可以与其他线程包无缝共存。
  • TBB强调可扩展的数据并行编程。 将程序分解成单独的功能块,并为每个块分配一个单独的线程是一种通常不能很好扩展的解决方案,因为功能块的数量通常是固定的。 相比之下,TBB 强调数据并行编程,支持多个线程处理集合的不同部分。 通过将集合分成更小的部分,数据并行编程可以很好地扩展到更多的处理器。 使用数据并行编程,程序性能会随着处理器的增加而提高。
  • TBB依赖于泛型编程。 传统库根据特定类型或基类指定接口。 相反,TBB 使用泛型编程。 泛型编程的本质是编写具有最少约束的最佳算法。 C++ 标准模板库 (STL) 是泛型编程的一个很好的例子,其中接口由类型要求指定。 例如,C++ STL 有一个模板函数 sort 可以对根据序列上的迭代器抽象定义的序列进行排序。 对迭代器的要求是:
    • 提供随机访问
    • 如果迭代器 i 指向的项应该在迭代器 j 指向的项之前,则表达式 *i<*j 为真,否则为假。
    • 表达式 swap(*i,*j) 交换两个元素。
  • 类型要求方面的规范使模板能够对序列的许多不同表示进行排序,例如向量和双端队列。 类似地,TBB 模板指定对类型的要求,而不是特定类型,从而适应不同的数据表示。 泛型编程使 TBB 能够提供具有广泛适用性的高性能算法。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值