# oneapi-src/onetbb

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/oneapi-src-onetbb).**

6,683 stars · 1,173 forks · C++ · Apache-2.0

## Links

- GitHub: https://github.com/oneapi-src/oneTBB
- Homepage: https://uxlfoundation.github.io/oneTBB/
- awesome-repositories: https://awesome-repositories.com/repository/oneapi-src-onetbb.md

## Description

oneTBB is a C++ parallelism library and framework designed to add multi-core parallelism to applications. It provides a task-based parallelism model that maps logical computational tasks to available hardware cores to eliminate the need for manual thread management.

The library functions as a multi-core scaling tool, utilizing generic templates to scale data-parallel operations across processors for portable performance. It employs a task-based framework to ensure computational workloads are distributed across hardware resources.

The project covers shared memory parallelism, multi-core task scheduling, and data parallelism scaling. It utilizes a work-stealing task scheduler, recursive range splitting, and dynamic load balancing to manage the distribution of work across cores at runtime.

## Tags

### Programming Languages & Runtimes

- [C++ Parallel Programming](https://awesome-repositories.com/f/programming-languages-runtimes/c-parallel-programming.md) — Provides a comprehensive framework for implementing multi-core execution in C++ applications without manual thread management.
- [C++ Parallelism Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/c-parallelism-libraries.md) — Provides a library for adding multi-core parallelism to applications through task scheduling and data-parallel templates.
- [Parallelism Templates](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/generics-templates/parallelism-templates.md) — Utilizes generic C++ templates to decouple algorithmic logic from underlying hardware resource management for portable performance.
- [Parallel Computing Implementation](https://awesome-repositories.com/f/programming-languages-runtimes/parallel-computing-implementation.md) — Provides strategies for scaling computational throughput across multiple CPU cores in C++ applications. ([source](https://github.com/oneapi-src/onetbb#readme))

### Data & Databases

- [Data Parallelism Scaling](https://awesome-repositories.com/f/data-databases/large-scale-data-computation/data-parallelism-scaling.md) — Enables running operations across large datasets using templates to ensure portable performance across different multi-core processors.

### Operating Systems & Systems Programming

- [Dynamic Load Balancing](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-load-balancing.md) — Implements runtime adjustments to workload distribution across cores to prevent individual processor bottlenecks.
- [Work-Stealing Schedulers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/runtime-schedulers/work-stealing-schedulers.md) — Ships a work-stealing scheduler that dynamically balances computational tasks across hardware threads.
- [Logical Parallelism Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/logical-parallelism-mapping.md) — Automatically assigns computational tasks to available hardware cores to eliminate the need for manual thread management. ([source](https://github.com/oneapi-src/onetbb#readme))
- [Multi-Core Scheduling](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-architecture-support/multi-core-scheduling.md) — Distributes computational workloads across available processor cores to optimize hardware utilization and execution speed.
- [Multi-Core Scaling Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-core-scaling-libraries.md) — Offers a set of generic templates and tools for scaling data-parallel operations across processors for portable performance.
- [Recursive Range Splitting](https://awesome-repositories.com/f/operating-systems-systems-programming/recursive-range-splitting.md) — Divides large datasets into smaller sub-ranges recursively until they reach a grain size suitable for parallel execution.
- [Shared Memory Parallelism](https://awesome-repositories.com/f/operating-systems-systems-programming/shared-memory-parallelism.md) — Facilitates the development of applications that execute multiple tasks simultaneously within a single shared memory space.
- [Thread Pool Abstractions](https://awesome-repositories.com/f/operating-systems-systems-programming/thread-pool-abstractions.md) — Provides an abstraction layer that maps logical parallel tasks to a pool of worker threads, hiding physical thread management.

### Software Engineering & Architecture

- [Data-Parallel Scaling](https://awesome-repositories.com/f/software-engineering-architecture/hybrid-parallel-scaling/data-parallel-scaling.md) — Executes data-parallel operations across multi-core processors using generic templates for portable and scalable performance. ([source](https://github.com/oneapi-src/onetbb#readme))
- [Parallel Task Execution](https://awesome-repositories.com/f/software-engineering-architecture/parallel-task-execution.md) — Implements a model for executing multiple asynchronous computations simultaneously and aggregating their results.
- [Task-Based Concurrency Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/task-based-concurrency-frameworks.md) — Implements a framework that maps logical computational tasks to available hardware cores to avoid manual thread management.

### Part of an Awesome List

- [Development Environments](https://awesome-repositories.com/f/awesome-lists/devtools/development-environments.md) — Template library for implementing parallel programming on multi-core processors.
