cpp-taskflow 介绍
cpp-taskflow 是一个开源的 C++ 并行任务编程库,cpp-tastflow 非常快,只包含头文件,可以帮你快速编写包含复杂任务依赖的并行程序。
与现有的并行任务编程库(如OpenMP Tasking和Intel TBB FlowGraph)处理复杂的并行工作负载相比,Cpp-
Taskflow更快,更具表现力,更易于实现嵌入式集成。
Cpp-Taskflow 使您可以快速实现包含常规和不规则计算模式的任务分解策略,以及高效的工作窃取调度程序,以优化您的多线程性能。
Without Cpp-Taskflow | With Cpp-Taskflow |
---|---|
 |  |
Cpp-Taskflow具有静态任务和动态任务的统一界面,允许用户以自然的习语快速掌握我们的并行任务编程模型。
Static Tasking | Dynamic Tasking |
---|---|
 |  |
Cpp-Taskflow提供了一个可组合的任务依赖图界面,可同时实现高性能和高开发人员生产力。
Cpp-Taskflow允许用户通过chrome:// tracing轻松监控线程活动并分析其程序的性能。
Cpp-Taskflow是DARPA IDEA研究计划的一部分。 我们致力于为并行计算的学术和工业研究项目提供可靠的开发支持。 查看那些在使用Cpp-
Taskflow的用户怎么说:
- “Cpp-Taskflow is the cleanest Task API I’ve ever seen.”damienhocking
- “Cpp-Taskflow has a very simple and elegant tasking interface. The performance also scales very well.”totalgee
- “Cpp-Taskflow lets me handle parallel processing in a smart way.”Hayabusa
- “Best poster award for open-source parallel programming library.”Cpp Conference 2018
示例代码:
#include <taskflow/taskflow.hpp> // Cpp-Taskflow is header-only int main(){ tf::Executor executor; tf::Taskflow taskflow; auto [A, B, C, D] = taskflow.emplace( [] () { std::cout << "TaskA\n"; }, // task dependency graph [] () { std::cout << "TaskB\n"; }, // [] () { std::cout << "TaskC\n"; }, // +---+ [] () { std::cout << "TaskD\n"; } // +---->| B |-----+ ); // | +---+ | // +---+ +-v-+ A.precede(B); // A runs before B // | A | | D | A.precede(C); // A runs before C // +---+ +-^-+ B.precede(D); // B runs before D // | +---+ | C.precede(D); // C runs before D // +---->| C |-----+ // +---+ executor.run(taskflow).wait(); return 0; }
cpp-taskflow 官网
https://cpp-taskflow.github.io/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。