Intel® oneAPI Threading Building Blocks (oneTBB)
Getting Help and Support
Notational Conventions
Introduction
oneTBB Benefits
oneTBB Developer Guide
Package Contents
Parallelizing Simple Loops
Parallelizing Complex Loops
Parallelizing Data Flow and Dependence Graphs
Parallelizing Data Flow and Dependency Graphs
Basic Flow Graph Concepts
Graph Application Categories
Predefined Node Types
Flow Graph Tips and Tricks
Estimating Flow Graph Performance
Work Isolation
Exceptions and Cancellation
Floating-point Settings
Containers
Mutual Exclusion
Timing
Memory Allocation
The Task Scheduler
Design Patterns
Migrating from Threading Building Blocks (TBB)
Constrained APIs
Invoke a Callable Object
Appendix A Costs of Time Slicing
Appendix B Mixing With Other Threading Packages
References
oneTBB API Reference
Notices and Disclaimers
Intel® oneAPI Threading Building Blocks (oneTBB)
oneTBB Developer Guide
Parallelizing Data Flow and Dependence Graphs
View page source
Parallelizing Data Flow and Dependence Graphs
Parallelizing Data Flow and Dependency Graphs
Basic Flow Graph Concepts
Flow Graph Basics: Graph Object
Flow Graph Basics: Nodes
Flow Graph Basics: Edges
Flow Graph Basics: Mapping Nodes to Tasks
Flow Graph Basics: Message Passing Protocol
Flow Graph Basics: Single-push vs. Broadcast-push
Flow Graph Basics: Buffering and Forwarding
Flow Graph Basics: Reservation
Graph Application Categories
Data Flow Graph
Dependence Graph
Predefined Node Types
Flow Graph Tips and Tricks
Flow Graph Tips for Waiting for and Destroying a Flow Graph
Always Use wait_for_all()
Avoid Dynamic Node Removal
Destroying Graphs That Run Outside the Main Thread
Flow Graph Tips on Making Edges
Use make_edge and remove_edge
Sending to One or Multiple Successors
Communication Between Graphs
Using input_node
Avoiding Data Races
Flow Graph Tips on Nested Parallelism
Use Nested Algorithms to Increase Scalability
Use Nested Flow Graphs
Flow Graph Tips for Limiting Resource Consumption
Using limiter_node
Use Concurrency Limits
Create a Token-Based System
Attach Flow Graph to an Arbitrary Task Arena
Guiding Task Scheduler Execution
Work Isolation
Flow Graph Tips for Exception Handling and Cancellation
Catching Exceptions Inside the Node that Throws the Exception
Cancel a Graph Explicitly
Use graph::reset() to Reset a Canceled Graph
Canceling Nested Parallelism
Estimating Flow Graph Performance