Overview
Threading Building Blocks (TBB) is an award-winning C++ runtime library that abstracts the low-level threading details necessary for optimal multi-core performance. It uses common C++ templates and coding style to eliminate tedious threading implementation work.
TBB requires fewer lines of code to achieve parallelism than other threading models. The applications you write are portable across platforms. Since the library is also inherently scalable, no code maintenance is required as more processor cores become available.Features
Ready to use parallel algorithms:
Select from a library of highly-efficient parallel algorithm templates, and rapidly obtain the advantages of multi-core Intel processors.
- Quickly employ commonly needed algorithms designed for parallel performance and scalability.
- Generic templates let you easily tailor these algorithms to your needs.
- Supports easy plug-in deployment into applications to deliver scalable software speed-up, optimizing for both available cores and cache locality.
- Reduce the work required to produce threaded software in many cases, by means of pre-built parallel constructs.
Write applications once and deploy on multiple OS's.
- Provides a single solution for Windows*, Linux*, and Mac OS* X on 32-bit and 64-bit platforms using Intel®, Microsoft, and GNU compilers.
- Supports industry-leading compilers from Intel, Microsoft and GNU.
- Speeds deployment of applications on multiple multi-core platforms.
Specify threading functionality in terms of logical tasks instead of physical threads.
- Lets developer focus on higher level of scalable task patterns instead of low-level thread mechanics
- Uses proven data-decomposition abstractions that efficiently use multiple cores
- Enables automatic load balancing
- Efficiently supports nested parallelism, allowing parallel components to be built from other parallel components
Get highly optimized parallel functionality now with minimal effort.
- Your C++ application simply calls the Threading Building Blocks library
- Standard C++ - no need to rewrite code in a new language
- Compatible with other threading packages
- Allows unlimited distribution of the runtime libraries with your software
- Seamlessly integrates into existing development environments
Optimize the processor's ability to perform simultaneous tasks.
- Simplify multithreaded application development with interfaces designed for thread-safety and high concurrency.
- Improve application quality by employing pre-tested data structures.
- Improve application performance by enabling multiple execution cores or processors to work together more efficiently.
Automatic grainsize calculation:
TBB can automatically calculate grainsize to control the granularity of a task in order to get good performance on multi-core processors.
New in This Release
The following features are new since version 1.0:
- Support for Microsoft Windows Vista*
- Support for Apple Mac OS* X systems with Intel® 64 architecture
- Support for Apple’s Mac OS* X 10.4.8
- Support for additional Linux distributions, including: Red Hat EL5, Red Hat Fedora Core 5 and 6 and Asianux* 2.0
- Improved performance/robustness of the spin_mutex class
- Automatic grain size calculator for optimal algorithm parallelization
Library Components
Threading Building Blocks contains the following library components:
Generic Parallel Algorithms
- parallel_for
- parallel_reduce
- parallel_scan
- parallel_sort
- parallel_while
- pipeline
Assistant Classes to Use with Algorithms
- blocked_range (for use with algorithms, containers, etc.)
- blocked_range2d (for use with algorithms, containers, etc.)
Thread-Safe Containers
- concurrent_hash_map
- concurrent_queue
- concurrent_vector
Synchronization Primitives
- atomic
- spin_mutex
- spin_rw_mutex (reader-writer spin mutex)
- queuing_mutex
- queuing_rw_mutex (reader-writer queuing mutex)
- mutex
Task Scheduler
Memory Allocation
- scalable_allocator
- cache_aligned_allocator
- aligned_space
Timing
- tick_count
Compatibility
Threading Building Blocks are cross-platform (Windows, Linux, and Mac OS* X), support 32-bit and 64-bit applications as well as work with Intel, Microsoft and GNU compilers.
This library is specifically designed to work in concert with other threading technologies, such as Win32*, POSIX*, and OpenMP* threads, providing a high degree of design and development flexibility. The templates implemented in Intel Threading Building Blocks rely on generic programming in order to provide high-speed and flexible algorithms with very few implementation constraints.
Threading Building Blocks supports the following processors:
Threading Building Blocks supports the following operating systems:
Microsoft Windows* Systems
Linux* Systems
- Mac OS* X 10.4.4 or higher
- Microsoft Visual C++* 7.1 (Microsoft Visual Studio* .NET 2003, Windows systems only)
- Microsoft Visual C++ 8.0 (Microsoft Visual Studio 2005, Windows systems only)
- Intel® C++ Compiler 9.0 or higher (Windows and Linux systems)
- Intel® C++ Compiler 9.1 or higher (Mac OS* X systems)
- For each supported Linux operating system, the standard gcc version provided with that operating system is supported, including: 3.2, 3.3, 3.4, 4.0, 4.1
- For each supported Mac OS* X operating system, the standard gcc version provided with that operating system is supported, including: 4.0.1 (Xcode* tool suite 2.2.1 or higher)
- Windows
- Linux
- Mac OS* X
System Requirements for Microsoft Windows Systems
Hardware | |
Minimum Requirements |
|
Recommended |
|
Software | |
Minimum Requirements |
|
Recommended |
|
System Requirements for Linux Systems
Hardware | |
Minimum Requirements |
|
Recommended |
|
Software | |
Minimum Requirements |
|
Recommended |
|
System Requirements for Mac OS* X Systems with Intel Processors
Hardware | |
Minimum Requirements |
|
Recommended |
|
Software | |
Minimum Requirements |
|
Recommended |
|
1 Hyper-Threading Technology requires a computer system with an Intel® Pentium® 4 processor supporting HT Technology and a Hyper-Threading Technology enabled chipset, BIOS, and operating system. Performance will vary depending on the specific hardware and software you use. See http://www.intel.com/info/hyperthreading for more information including details on which processors support HT Technology.


