Repolode
taskflow

taskflow/taskflow

一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。

Star
12,210
Fork
1,417
未关闭 Issue
39
最近提交
10天前

这是什么?

Taskflow 是一个 C++ 库,用任务依赖图来描述并行工作。开发者把任务写成 lambda,声明任务之间的先后关系,再交给执行器调度到多个 CPU 线程上运行。它是纯头文件库,只需引入头文件即可使用,无需单独编译或安装。

除静态任务图外,Taskflow 还支持在运行时动态生成子图的递归任务、可构成循环与分支的条件任务,以及带动态依赖的异步任务。库中提供 for_each、reduce、sort 等并行算法和流水线(pipeline)组件,并可通过 CUDA Graph 任务把计算卸载到 NVIDIA GPU。配套的性能分析工具 TFProf 可在设置 TF_ENABLE_PROFILER 环境变量后,通过网页界面查看执行轨迹。

项目需要支持 C++20 的编译器,例如 GCC 11+、Clang 12+、MSVC 2019 或 nvcc 12+,可在 Linux、Windows 和 macOS 上运行。

核心功能

  • 01纯头文件库,引入头文件即可使用,无需安装。
  • 02通过 precede 和 succeed 声明依赖关系构建静态任务图。
  • 03支持递归子图、用于循环和分支的条件任务,以及带动态依赖的异步任务。
  • 04提供 for_each、reduce、sort 等并行算法和流水线组件。
  • 05通过 CUDA Graph 将计算任务卸载到 NVIDIA GPU。
  • 06内置 TFProf 性能分析工具,并可将任务图导出为 DOT 格式。

适用场景

  • 在多核 CPU 上并行化依赖关系复杂的 C++ 任务。
  • 在同一个调度图中协同 CPU 与 CUDA GPU 计算,用于科学计算。
  • 分析和可视化多线程 C++ 程序的执行时间线。

快速上手

  1. 1

    编写 README 中的示例程序 simple.cpp

  2. 2

    克隆 Taskflow 仓库(只需一次)

    git clone https://github.com/taskflow/taskflow.git
  3. 3

    编译程序,并将编译器指向 taskflow 头文件目录

    g++ -std=c++20 simple.cpp -I taskflow/ -O2 -pthread -o simple
  4. 4

    运行编译后的程序

    ./simple

使用前须知

  • 需要支持 C++20 的编译器,例如 GCC 11+、Clang 12+ 或 MSVC 2019。
  • GPU 任务功能需要 NVIDIA CUDA Toolkit 及其编译器(nvcc)。

标签

常见问题

taskflow 是什么?
一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。 Taskflow 是一个 C++ 库,用任务依赖图来描述并行工作。开发者把任务写成 lambda,声明任务之间的先后关系,再交给执行器调度到多个 CPU 线程上运行。它是纯头文件库,只需引入头文件即可使用,无需单独编译或安装。
taskflow 可以免费使用吗?用的什么许可证?
taskflow 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
taskflow 还在维护吗?
活跃维护中。taskflow 最近一次提交是在 2026年10月15日。
taskflow 适合用来做什么?
在多核 CPU 上并行化依赖关系复杂的 C++ 任务。 在同一个调度图中协同 CPU 与 CUDA GPU 计算,用于科学计算。 分析和可视化多线程 C++ 程序的执行时间线。
taskflow 怎么安装和运行?
编写 README 中的示例程序 simple.cpp 克隆 Taskflow 仓库(只需一次): git clone https://github.com/taskflow/taskflow.git 编译程序,并将编译器指向 taskflow 头文件目录: g++ -std=c++20 simple.cpp -I taskflow/ -O2 -pthread -o simple 运行编译后的程序: ./simple
在哪里获取 taskflow?
源代码和安装说明在 GitHub 上:https://github.com/taskflow/taskflow

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目