# taskflow/taskflow

**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/taskflow-taskflow).**

12,013 stars · 1,396 forks · C++ · NOASSERTION

## Links

- GitHub: https://github.com/taskflow/taskflow
- Homepage: https://taskflow.github.io
- awesome-repositories: https://awesome-repositories.com/repository/taskflow-taskflow.md

## Topics

`concurrent-programming` `cuda-programming` `gpu-programming` `heterogeneous-parallel-programming` `high-performance-computing` `multi-threading` `multicore-programming` `multithreading` `parallel` `parallel-computing` `parallel-programming` `taskflow` `taskparallelism` `threadpool` `work-stealing`

## Description

Taskflow is a C++ task-parallel framework designed to build high-performance parallel workflows and complex dependency graphs. It provides a programming model that organizes computational work into directed acyclic graphs, enabling developers to manage concurrency, resource scheduling, and task dependencies across multi-core CPUs and GPU accelerators.

The framework distinguishes itself through its ability to orchestrate heterogeneous systems, allowing for the integration of hardware-accelerated kernels and memory operations into unified execution pipelines. It supports dynamic runtime subflows, which permit the spawning of new tasks during execution to handle unpredictable or recursive workloads, and offers modular composition to nest sub-graphs within larger, reusable structures.

Beyond core scheduling, the project includes a comprehensive suite of parallel algorithms for data processing, such as sorting, reduction, and prefix sums. It also features robust pipeline orchestration for multi-stage data streaming, along with built-in diagnostic tools for profiling performance, monitoring execution progress, and visualizing task dependencies.

The library provides extensive infrastructure for managing graphics hardware, including stream lifecycle management, event coordination, and cross-memory data transfers. It is implemented as a header-only C++ library, facilitating integration into existing high-performance computing environments.

## Tags

### Software Engineering & Architecture

- [C++ Task Engines](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-task-managers/c-task-engines.md) — Provides a high-performance framework for composing asynchronous tasks into parallel workflows in C++.
- [Directed Acyclic Graph Engines](https://awesome-repositories.com/f/software-engineering-architecture/directed-acyclic-graph-engines.md) — Organizes computational work into directed acyclic graphs to manage task dependencies and execution order across multi-core CPUs and GPUs.
- [Task-Based Concurrency Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/task-based-concurrency-frameworks.md) — Organizes computational work into directed acyclic graphs to manage concurrency, dependencies, and resource scheduling.
- [Data Processing Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-processing-pipelines.md) — Builds multi-stage processing workflows where data flows through sequential or parallel stages to maximize throughput.
- [Dynamic Task Spawning](https://awesome-repositories.com/f/software-engineering-architecture/task-execution-engines/dynamic-task-spawning.md) — Supports spawning new tasks during execution to handle recursive or unpredictable workloads. ([source](https://taskflow.github.io/taskflow/Cookbook.html))
- [Recursive Subflow Generators](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-task-graphs/recursive-subflow-generators.md) — Enables recursive parallelism by spawning sub-graphs dynamically during execution. ([source](https://taskflow.github.io/taskflow/index.html))
- [Modular Program Composition](https://awesome-repositories.com/f/software-engineering-architecture/modular-program-composition.md) — Enables grouping independent task graphs into modular units for complex workflow composition. ([source](https://taskflow.github.io/taskflow/namespacetf.html))
- [Subflow Orchestrators](https://awesome-repositories.com/f/software-engineering-architecture/subflow-orchestrators.md) — Supports recursive and unpredictable workload generation by allowing tasks to spawn additional parallel work during active execution.
- [Work-Stealing Queues](https://awesome-repositories.com/f/software-engineering-architecture/task-queues/work-stealing-queues.md) — Allocates work-stealing queues to store and distribute parallel tasks across multiple threads for efficient load balancing. ([source](https://taskflow.github.io/taskflow/functions_func_p.html))
- [Host-Device Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/task-scheduling/host-device-synchronization.md) — Supports running CPU-side functions within graphics hardware task graphs to handle non-device operations. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaGraphBase.html))
- [Concurrent Task Limiters](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-runners/concurrent-task-limiters.md) — Limits task execution by requiring the acquisition of a specified range of semaphores to manage concurrency levels. ([source](https://taskflow.github.io/taskflow/classtf_1_1Task.html))
- [Execution Flow Control](https://awesome-repositories.com/f/software-engineering-architecture/execution-flow-control.md) — Integrates conditional logic into task graphs to enable branching and cycles during execution. ([source](https://taskflow.github.io/taskflow/index.html))
- [Parallel](https://awesome-repositories.com/f/software-engineering-architecture/sorting-algorithms/parallel.md) — Organizes collections of data using multi-threaded sorting algorithms that leverage task-parallel infrastructure. ([source](https://taskflow.github.io/taskflow/functions_func_s.html))
- [Subflow Lifecycle Monitoring](https://awesome-repositories.com/f/software-engineering-architecture/subflow-orchestrators/subflow-lifecycle-monitoring.md) — Provides methods to verify subflow execution status to manage task lifecycles. ([source](https://taskflow.github.io/taskflow/functions_func_j.html))
- [Placeholder Task Nodes](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-task-graphs/placeholder-task-nodes.md) — Reserves nodes in a task graph without assigning work to allow for dynamic task assignment. ([source](https://taskflow.github.io/taskflow/classtf_1_1FlowBuilder.html))

### Artificial Intelligence & ML

- [Heterogeneous Workflow Orchestrators](https://awesome-repositories.com/f/artificial-intelligence-ml/local-model-orchestrators/heterogeneous-orchestrators/heterogeneous-workflow-orchestrators.md) — Integrates hardware-accelerated kernels and memory operations into unified, heterogeneous parallel execution pipelines.
- [Heterogeneous Orchestrators](https://awesome-repositories.com/f/artificial-intelligence-ml/local-model-orchestrators/heterogeneous-orchestrators.md) — Integrates device-specific compute kernels into host-side task graphs to enable unified execution across CPUs and graphics accelerators.
- [Kernel Dispatchers](https://awesome-repositories.com/f/artificial-intelligence-ml/gpu-kernel-implementations/kernel-dispatchers.md) — Manages the dispatch of computational tasks to graphics hardware by coordinating graph-based execution flows. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaGraphBase.html))

### Operating Systems & Systems Programming

- [GPU Acceleration](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/gpu-acceleration.md) — Offloads intensive data processing to graphics hardware by orchestrating kernels, memory operations, and streams within a unified framework.
- [Task Dependencies](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/gpu-acceleration/task-dependencies.md) — Establishes execution order between hardware-accelerated tasks by creating precedence links that ensure specific tasks complete before others begin. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaTask.html))
- [Task Graph Definition](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/gpu-acceleration/task-graph-definition.md) — Enables the construction of complex execution sequences for graphics hardware by chaining memory operations, computational kernels, and specific algorithmic tasks. ([source](https://taskflow.github.io/taskflow/functions_b.html))
- [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) — Balances computational load dynamically by allowing idle worker threads to claim pending tasks from the queues of busy threads.
- [Operation Capture Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/gpu-acceleration/operation-capture-engines.md) — Records sequences of stream operations into a graph structure for later execution, supporting multiple thread-safety modes. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaStreamBase.html))
- [Cross-Memory Transfer Utilities](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/gpu-memory-allocators/cross-memory-transfer-utilities.md) — Copies data blocks between CPU and hardware accelerator memory locations using typed or byte-level operations. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaGraphBase.html))
- [Memory Object Pools](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/custom-memory-allocators/memory-object-pools.md) — Recycles memory resources through a dedicated pool to minimize allocation overhead during high-frequency task cycles. ([source](https://taskflow.github.io/taskflow/functions_func_o.html))
- [Host Memory Accessors](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/gpu-memory-allocators/host-memory-accessors.md) — Provides mechanisms to retrieve memory addresses associated with graphics hardware structures to coordinate data movement. ([source](https://taskflow.github.io/taskflow/functions_func_h.html))

### Scientific & Mathematical Computing

- [High-Performance and Parallel Computing](https://awesome-repositories.com/f/scientific-mathematical-computing/high-performance-execution-environments/high-performance-and-parallel-computing.md) — Builds high-performance applications that distribute computational workloads across multiple CPU cores using task-based dependency graphs.
- [Parallel Algorithms](https://awesome-repositories.com/f/scientific-mathematical-computing/parallel-algorithms.md) — Provides a comprehensive suite of parallel algorithms for data processing, such as sorting, reduction, and prefix sums.
- [Parallel Prefix Sum Calculators](https://awesome-repositories.com/f/scientific-mathematical-computing/prefix-calculations/parallel-prefix-sum-calculators.md) — Computes the cumulative sum of a range of elements across multiple threads to aggregate data efficiently. ([source](https://taskflow.github.io/taskflow/functions_func_i.html))

### Data & Databases

- [Declarative Pipeline Construction](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-processing-frameworks/declarative-pipeline-construction.md) — Builds multi-stage data processing pipelines where stages execute either serially or in parallel to transform data. ([source](https://taskflow.github.io/taskflow/functions_func_p.html))
- [Data Processing Pipelines](https://awesome-repositories.com/f/data-databases/data-processing-pipelines.md) — Constructs multi-stage processing workflows where data flows through concurrent stages to maximize throughput in data-intensive applications.
- [Stream and Pipeline Orchestration](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-transformation/stream-pipeline-orchestration.md) — Orchestrates multi-stage processing by flowing data tokens through sequential or parallel stages to maximize throughput.
- [Stream Event Synchronizers](https://awesome-repositories.com/f/data-databases/event-streaming-pipelines/stream-event-synchronizers.md) — Records events on a stream or forces a stream to wait for the completion of specific events to manage task dependencies. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaStreamBase.html))
- [Parallel Data Reducers](https://awesome-repositories.com/f/data-databases/parallel-data-transformation/parallel-data-reducers.md) — Aggregates elements from a collection into a single result using parallel reduction patterns within a task graph. ([source](https://taskflow.github.io/taskflow/functions_func_r.html))
- [Parallel Data Merging](https://awesome-repositories.com/f/data-databases/parallel-processing/parallel-data-merging.md) — Combines two sorted sequences into a single sorted sequence using parallel processing to improve throughput. ([source](https://taskflow.github.io/taskflow/functions_m.html))
- [Stream Lifecycle Managers](https://awesome-repositories.com/f/data-databases/stream-lifecycle-management/stream-lifecycle-managers.md) — Encapsulates stream resources with unique ownership to ensure proper creation and destruction of stream handles and associated events. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaStreamBase.html))

### DevOps & Infrastructure

- [Parallel Work Partitioning](https://awesome-repositories.com/f/devops-infrastructure/load-balancing/partitioning-algorithms/parallel-work-partitioning.md) — Configures how computational workloads are divided among threads to optimize parallel execution. ([source](https://taskflow.github.io/taskflow/functions_func.html))

### Development Tools & Productivity

- [Parallel Execution Profilers](https://awesome-repositories.com/f/development-tools-productivity/execution-monitors/parallel-execution-profilers.md) — Monitors and analyzes the performance of task-based programs to identify bottlenecks and optimize work distribution. ([source](https://taskflow.github.io/taskflow/Cookbook.html))
- [Pipeline Execution Engines](https://awesome-repositories.com/f/development-tools-productivity/pipeline-execution-engines.md) — Manages the lifecycle and state of data processing pipelines, including resetting or running tasks until specific conditions are met. ([source](https://taskflow.github.io/taskflow/functions_func_r.html))
- [Task Composition Engines](https://awesome-repositories.com/f/development-tools-productivity/task-scheduling/task-composition-engines.md) — Enables the construction of complex workflows by nesting modular sub-graphs and pipelines within larger, reusable task structures.
- [Pipeline Execution Monitors](https://awesome-repositories.com/f/development-tools-productivity/pipeline-monitors/pipeline-execution-monitors.md) — Queries runtime statistics of scheduling tokens during pipeline processing to track progress and identify stage, line, and token numbers. ([source](https://taskflow.github.io/taskflow/classtf_1_1Pipe.html))
- [Task Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/task-dependency-managers.md) — Queries task dependencies to analyze the structure of parallel execution graphs. ([source](https://taskflow.github.io/taskflow/functions_n.html))

### System Administration & Monitoring

- [Taskflow Cancellation Handlers](https://awesome-repositories.com/f/system-administration-monitoring/system-activity-monitoring/session-activity-monitors/workflow-cancellation-handlers/remote-task-cancellation/taskflow-cancellation-handlers.md) — Allows stopping pending tasks while permitting currently running tasks to finish. ([source](https://taskflow.github.io/taskflow/classtf_1_1Future.html))
- [Execution Progress Trackers](https://awesome-repositories.com/f/system-administration-monitoring/execution-progress-trackers.md) — Observes the state and performance of task execution through custom observers to track progress and identify bottlenecks. ([source](https://taskflow.github.io/taskflow/annotated.html))
- [Task Dependency Visualizers](https://awesome-repositories.com/f/system-administration-monitoring/task-monitoring/task-dependency-visualizers.md) — Exports the structure of a task graph into a standard format to allow for graphical inspection and debugging. ([source](https://taskflow.github.io/taskflow/classtf_1_1cudaGraphBase.html))
