Taskflow
可以帮助您在现代 C + + 中快速编写并行和异构的任务程序 。
简介 {#简介}
Taskflow
是一款 C++ 下任务流程框架,可以管理Pipeline
并执行并行工作。Taskflow
的流程管理有论文支撑,具有一定理论安全性。Taskflow
可以帮助您快速编写具有高性能和同时高生产率的并行和异构任务程序。与许多现有的任务编程库相比,它更快、更具表现力、代码行更少、更容易进行插入式集成。- 当前(2023.1)最新版本
v3.5
,7.7k stars
- 官方网站:https://taskflow.github.io/
- Github 仓库:https://github.com/taskflow/taskflow
- 官方文档:https://taskflow.github.io/taskflow/index.html
下载使用 {#下载使用}
Taskflow
使用需要源码
下载 {#下载}
Release {#Release}
- 可以在仓库的 Release 中下载:https://github.com/taskflow/taskflow/releases/tag/v3.5.0
Clone Repository {#Clone-Repository}
-
也可以直接获取整个仓库:
-
下载仓库后切换到
v3.5.0
版本
使用 {#使用}
-
使用时仅需引入源码目录中的
taskflow/taskflow.hpp
即可 -
将
Taskflow
源码目录添加到系统环境变量,在项目中添加引用目录,代码中直接include
就可以使用了 -
命名空间叫
tf
:
C++环境 {#C-环境}
- 注意:
Taskflow
需要 C++17 编译环境
g++ {#g}
- 如果使用 g++ 需要在命令行添加参数
-std=c++17
:
Visual Studio {#Visual-Studio}
- 如果是在 Visual Studio 下需要开启 C++17 环境,需要在项目
属性
->C/C++
->语言
->C++ 语言标准
中修改:
入门用法 {#入门用法}
Demo {#Demo}
- 官网的 Demo 代码:
- 输出:
流程图 {#流程图}
Taskflow
可以输出代码运行拓扑图- 为了不让用户额外安装流程图绘制的工具,
Taskflow
提供了解释流程图的网页工具 - 使用时,在代码中加入
taskflow.dump(std::cout);
可以输出流程图代码
- 上述代码输出:
- 上述代码在 GraphViz 类工具中都可以识别为流程图
- 官方提供了访问流程图绘制工具网页:https://dreampuf.github.io/GraphvizOnline/
- 将代码粘贴到网页中,就可以看到流程图了
Profile {#Profile}
Taskflow
还提供了 Profile 工具 (需要较高的Taskflow
版本)- 使用时需要设置系统环境变量
TF_ENABLE_PROFILER
指向一个 json 文件位置(路径可以相对、可以绝对)
- 这样在运行程序时会向目标位置输出 json 文件,类似:
- 官方通用提供了这段信息的在线可视解析工具:https://taskflow.github.io/tfprof/
- 将 json 中内容粘贴到工具中即可看到运行 profile 信息
原始论文 {#原始论文}
《Taskflow:A Lightweight Parallel and Heterogeneous Task Graph Computing System》
参考资料 {#参考资料}
- https://github.com/taskflow/taskflow
- https://taskflow.github.io/taskflow/index.html
- https://dreampuf.github.io/GraphvizOnline/
- https://taskflow.github.io/tfprof/
- https://tsung-wei-huang.github.io/papers/tpds21-taskflow.pdf
文章链接:
https://www.zywvvd.com/notes/coding/cpp/taskflow/taskflow/