java 中taskflow,cpp-taskflow

cpp-taskflow 是一个开源的 C++ 并行任务编程库,cpp-tastflow 非常快,只包含头文件,可以帮你快速编写包含复杂任务依赖的并行程序。

与现有的并行任务编程库(如OpenMP Tasking和Intel TBB FlowGraph)处理复杂的并行工作负载相比,Cpp-Taskflow更快,更具表现力,更易于实现嵌入式集成。

f989e859d5112904ce9770170e876ebc.png

Cpp-Taskflow 使您可以快速实现包含常规和不规则计算模式的任务分解策略,以及高效的工作窃取调度程序,以优化您的多线程性能。

Without Cpp-Taskflow

With Cpp-Taskflow

165f4d7dca60abf399097b2bc1e24aa0.gif

624b80fd0dae582639ad41db9ba131e7.gif

Cpp-Taskflow具有静态任务和动态任务的统一界面,允许用户以自然的习语快速掌握我们的并行任务编程模型。

Static Tasking

Dynamic Tasking

3f11c35a8b98def1d74a43a2aab8f755.png

ef2ee79d0dccf891e950455b38ff03dd.png

Cpp-Taskflow提供了一个可组合的任务依赖图界面,可同时实现高性能和高开发人员生产力。

Cpp-Taskflow允许用户通过chrome:// tracing轻松监控线程活动并分析其程序的性能。

a08b07eb44575264e6b315963b80e46c.png

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值