TBB
 
Welcome Guest | Login | Register
 

Features & Benefits

Feature

Benefit

Performance and Productivity

 

Parallel Algorithms

Generic implementation of common parallel performance patterns

Generic implementations of parallel patterns such as parallel loops, flow graphs, and pipelines can be an easy way to achieve a scalable parallel implementation without developing a custom solution from scratch.

Task Scheduler

Engine that manages parallel tasks and task groups

Intel® TBB task scheduler supports task-based programming and utilizes task-stealing for dynamic workload balancing – a scalable and higher level alternative to managing OS threads manually. The implementation supports C++ exceptions, task/task group priorities, and cancellation which are essential for large and interactive parallel C++ applications.

Concurrent Containers

Generic implementation of common idioms for concurrent access

Intel® TBB concurrent containers are a scalable alternative to serial data containers. Serial data structures (such as C++ STL containers) often require a global lock to protect them from concurrent access and modification; Intel® TBB concurrent containers allow multiple threads to concurrently access and update items in the container maximizing the amount of parallel work and improving application’s scalability.

Synchronization Primitives

Exception-safe locks;  mutexes, condition variables, and atomic operations

Intel® TBB provides a comprehensive set of synchronization primitives with different qualities that are applicable to common synchronization strategies. Exception-safe implementation of locks help  to avoid dead-locks in C++ programs which use C++ exceptions. Usage of Intel® TBB atomic variables instead of C-style atomic API minimizes potential data races.

Scalable Memory Allocators

Scalable memory manager and false-sharing free memory allocator

The scalable memory allocator avoids scalability bottlenecks by minimizing access to a shared memory heap via per-thread memory pool management. Special management of large (>=8KB) blocks allow more efficient resource usage, while still offering scalability and competitive performance. The cache-aligned memory allocator avoids false-sharing by not allowing allocated memory blocks to split a cache line.

Documentation and Samples

A complete documentation package and code samples are readily available both as a part of Intel® TBB installation and online. The Getting Started Guide and the Tutorial provides an introduction into Intel® TBB.  The Reference Manual contains a formal descriptions of all classes and functions implemented in Intel® TBB, while the Design Patterns discuss common parallel programming patterns and how to implement them using Intel® TBB.

Flexibility

 

Applicability to Various Application Domains, Generic parallel algorithms and flow graph

The Intel® TBB flow graph as well as generic template functions are customizable to a wide variety of problems.

User-Defined Tasks

When an algorithm cannot be expressed with high-level Intel® TBB constructs, the user can choose to create arbitrary task trees. Tasks can be spawned for better locality and performance or enqueued to maintain FIFO-like order and ensure starvation-resistant execution.

Forward-scaling

 

Dynamic Task Scheduling

Intel® TBB allows a developer to think of  parallelism at the higher level avoiding dealing with low level details of threading. A developer expresses a parallel model in terms of parallel tasks and relies on Intel® TBB to execute them in an efficient way by dynamically detecting the appropriate number of threads. This makes Intel® TBB based solutions independent of the number of CPU’s and allows for improved performance and scalability with the growing number of CPUs in the future. 

Composability

 

Support for Various Types of Parallelism

Intel® TBB task scheduler and parallel algorithms support nested and recursive parallelism as well as running parallel constructs side-by-side.  This is useful for introducing parallelism gradually and helps independent implementation of parallelism in different components of an application.

Compatibility

 

Co-existence with Other Threading Packages

Intel® TBB is designed to co-exist with other threading packages and technologies (Intel® Cilk™ Plus, Intel® OpenMP, OS threads etc). Different components of Intel® TBB can be used independently and mixed with other threading technologies.

Compiler-independent Solution

Intel® TBB is a library solution and can be used in software projects built by multiple compilers, across numerous platforms.

Simple Licensing

 

Royalty-free Distribution

Redistribute unlimited copies of the Intel® TBB libraries and header files with your application.

Open Source version

Available for download from threadingbuildingblocks.org.  The broad support from an involved community provides developers access to additional platforms and OS’s. 

Attractive Product Pricing

Affordable, starting at US$299. Special academic pricing is also available.

 

 

Search 

Page & Feed options
Print | Email to a friend | Support | RSS

Bookmark This
 Digg this   del.icio.us

Resources

       Buy Now 
Intel TBB  Jolt Productivity Award

   

On which operating system(s) do you use TBB?