新特性 英特尔线程构建模块 4.2
英特尔 线程构建模块 (Intel TBB) 是最为人们熟知的一种 C++ 线程库,其最新的版本现已更新至 4.2。 与之前的 4.1 版本相比,更新后的版本提供了多个重要的新特性。 一些特性已经在 TBB 4.1 更新中发布出来。
新的同步基元 speculative_spin_mutex 提供了对推测锁定的支持。 这使得在第 4 代英特尔 酷睿处理器上使用英特尔(R) 事务性同步扩展 (Intel TSX) 硬件特性成为可能。 只要不出现可能会产生不同于非推测性锁定的结果的“冲突”,推测互斥锁在支持硬件事务性内存 (如英特尔 TSX) 的处理器上工作时就会允许多个线程获取同一个锁。 因此在非竞争性案例中就不会发生串行化。 这样就能在“短”的关键区域上大幅提高性能和可扩展性。 如果不为事务性同步提供硬件支持,推测互斥锁的作用将与非推测互斥锁类似,同时很可能会表现出更差的性能。
英特尔 TBB 现在支持准确的异常传播特性(基于 C++11 exception_ptr)。 借助 exception_ptr,异常对象可以在线程之间安全地拷贝。 这为多线程环境中的异常处理提供了灵活性。 现在准确的异常传播在所有平台的预构建库中都已提供,例如: OS X、Windows 和 Linux。 OS X 上存在两种库: 第一个库与 gcc 标准库相关联 — 默认情况下该库不支持准确的异常传播。 为了使用该特性,您应当使用与 libc++ (Clang 中的 C++ 标准库) 相关联的第二种库。 为了使用这些特性,请先创建 Intel TBB 环境然后按照以下方式构建您的应用:
# tbbvars.sh libc++
# clang++ -stdlib=libc++ -std=c++11 concurrent_code.cpp -ltbb
除 concurrent_unordered_set 和 concurrent_unordered_map 容器之外,我们现在提供 concurrent_unordered_multiset 和 concurrent_unordered_multimap,基于 Microsoft* PPL 原型。借助 concurrent_unordered_multiset,您可以多次插入一项,而这在 concurrent_unordered_set 中是不可能实现的。 同样,concurrent_unordered_multimap 允许您使用同一个键值插入一个以上的 <键,值> 对。 就“多” 容器而言,find 会在带有一个匹配搜索键的表格中返回第一项(或者 <键,值> 对)。
Intel TBB 容器现在可以使用 C++ 11 指定的值列表(初始化程序列表)方便地进行初始化:
1 tbb::concurrent_vector<int> v ({1,2,3,4,5} );
当前,支持初始化程序列表的容器有以下几种:
concurrent_vector
concurrent_hash_map
concurrent_unordered_set
concurrent_unordered_multiset
concurrent_unordered_map
concurrent_unordered_multimap
concurrent_priority_queue
可扩展内存分配程序为每个线程内的已分配内存都提供了高速缓存。 这种做法虽然确保了性能,但通常会增加内存的使用率。 尽管该内存分配程序尽量避免过度使用内存,在复杂的情况下 Intel TBB 4.2 还是会把更多的控制权交给程序设计员: 现在可以通过使用 scalable_allocation_command() 函数清理线程高速缓存,进而达到减少内存消耗的目的。 这也有助于大幅提高分配程序的整体性能。
Intel TBB 库已在多种不同平台上获得了广泛的使用。 移动开发人员现在可以在 Linux* 操作系统包中找到适合 Android 的预构建二进制文件。 Windows Store* 应用的二进制文件已经被添加到 Windows* 操作系统包中。
原子变量 tbb::atomic<T> 现在在 C++11 中使用时已经具备了构造函数。 这允许程序设计员在声明时就对它们的值进行初始化,同时正确支持构造表达式。 此时,以下代码对 gcc 和 Clang 编译器是有效的:
1 tbb::atomic<int> v=5;
新社区预览特性允许等待,直到所有工作线程终止。 在应用程序分解进程时,这种情况可能很有必要,否则 TBB 动态库可能会从运行时中卸载掉(例如,假如 TBB 是一个插件的一部分)。 如果您想启用工作线程等待功能,请按以下方式对 task_scheduler_init 对象进行初始化:
1 #define TBB_PREVIEW_WAITING_FOR_WORKERS 1
2 tbb::task_scheduler_init scheduler_obj (threads, 0, /*wait_workers=*/true);
从商用和开源网站中找到最新的 TBB 4.2。 下载并开始使用全新功能!
原文转自:http://g.csdn.net/5260727
相关推荐
嵌入式系统/ARM技术中的英特尔升级软件工具 支持Mac OS X Leopard操作系统
英特尔公司今天宣布升级其面向苹果公司Mac OS X Leopard操作系统的软件工具套件。Mac OS X Leopard操作系统是苹果公司*推出的第六版升级的操作系统。最新的10.1版英特尔:registered: C++编译器与英特尔:registered: Fortran编译器、英特尔:registered:多线程构建模块、英特尔:registered:数学核心函数库以及英特尔:registered:集成性能原件库等均针对Leopard操作系统和Xcode3.0开发环境进行了优化。 结合Leopard和Xcode 3.0,英特尔编译器为Mac开发人员提供了空前强大的支持,帮助他们充分发挥英特尔多核处理器的优势。英特尔编译器包含适用于Mac OS X的自动并行化功能、函数库以及线程构建模块
利用英特尔 线程构建模块
MSC.Software SimXpert* 是一种全面集成的模拟环境,用于进行多学科分析。SimXpert 能够提供交互式图形界面,有助于工程师执行端到端模拟工作,包括本机计算机辅助设计 (CAD) 导入 (import)、预处理、模型设置、求解、后期处理和报告。英特尔和 MSC.Software 合作线程化了 SimXpert,大幅提升了工具的性能和大幅提高了用户的工作效率。英特尔® TBB 由于能够兼容用 C++ 编写的多平台应用 SimXpert,当选为最佳方法。SimXpert 的许多特性超出了典型高性能计算 (HPC) 的纯数字应用,这些特性包括复杂的含有几何数据和模拟结果的数据库风格操作、复杂的内存分配运算、对广泛的企业级基础设施 C++ 代码的依赖、适合英特尔® TBB 管道并行模式的整体可视化管道架构,以及 OpenGL* 渲染。英特尔® TBB 采用增量式线程化方法,始自对初始的 72 项关键工程操作进行线程化,紧接着对用于生成边缘图物理基元的代码实施了线程化。在两路 (2S) 英特尔® 至强® 处理器 5100 系列平台(四核)上对七个较大的客户模拟模型的测试,显示出工程计算性能提升 3.8 倍至 3.9 倍。针对边缘图的优化使速度提升了 3% 到 44%。展望未来,MSC.Software 将继续采用这种增量式线程化方法,接下来将对其余绘图类型实施线程化,并可能在未来通过实施英特尔® TBB 管道实现重叠处理和 I/O。
使用英特尔:registered:线程构建模块和OpenMP库的并行可扩展Burrows-Wheeler转换(BWT)
本文是基于为实施Burrows-Wheeler转换(BWT)算法提供并行可伸缩代码的示例使用C ++的英特尔:registered:线程构建模块(TBB)和OpenMP库的实用指南。
有利于英特尔® Parallel Inspector线程错误分析的编译器设置
英特尔® Parallel Inspector 能够分析二进制代码来查找线程错误。然而,在编译程序时使用适当的编译器设置可使分析更加容易。基于本文主旨,下文提及英特尔® Parallel Inspector 时,即指英特尔® Parallel Inspector 中的线程错误分析。
英特尔 英特尔酷睿2双核处理器和移动式英特尔4高速芯片组系列开发套件产品简介.pdf
英特尔 英特尔酷睿2双核处理器和移动式英特尔4高速芯片组系列开发套件产品简介pdf,英特尔 英特尔酷睿2双核处理器和移动式英特尔4高速芯片组系列开发套件产品简介


