C++ 并行任务编程库 cpp-taskflow

C++ 并行任务编程库 cpp-taskflow

MIT
C/C++
跨平台
2019-07-27
红薯

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;
}

 

的码云指数为
超过 的项目
加载中

评论(6)

久永
久永
不在GPU上跑,并行计算意义不够大啊!
冰力
冰力
D 语言原生支持并行计算。
刘刚
刘刚
去吧
却又让幽兰枯萎
却又让幽兰枯萎
可惜java没得并行计算的可能了
yong230
yong230
java本身就内置有ForJoin并行计算框架啊
却又让幽兰枯萎
却又让幽兰枯萎
这个是并行还是多线程哟

暂无资讯

暂无问答

No.0 C++基础---C++经典著作列表

# C++经典著作列表 *C++入门书籍:《C++全方位学习》…… *C++进阶书籍:《C++编程思想》…… *C++高阶书籍:《C++网络编程》……

2015/07/02 21:10
84
1
C++ STL编程轻松入门 2

1.3.3 STL和GP,GP和OOP   正如前面所提到的,在STL的背后蕴含着泛型化程序设计(GP)的思想,在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的...

2015/11/21 10:30
144
0
c++ 书籍(zz)

 From:http://blog.csdn.net/is2120/article/details/44317241 下面是转载的在博客上看到的一个C++书籍阅读清单,可以参考下: 阶段 1 《Essential C++》 这是一本内容不多但很实用的C++...

2015/04/09 11:48
25
0
C++学习路线

一)语言入门: 《C++ Primer》 最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中) 适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对...

2018/03/27 16:13
42
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部