https://taskflow.github.io/taskflow/install.html
https://github.com/szandara/cpp-taskflow?tab=readme-ov-file info
https://dreampuf.github.io/GraphvizOnline/
https://taskflow.github.io/tfprof/
https://www.oschina.net/p/cpp-taskflow
https://github.com/taskflow/taskflow/releases/tag/v3.5.0
https://github.com/taskflow/taskflow
https://taskflow.github.io/taskflow/index.html
https://www.zywvvd.com/notes/coding/cpp/taskflow/taskflow/
我使用的版本是3.5,
讯享网
运行官例出现如下报错:
讯享网
加上-std=c++17后就解决了。后面的官例大家可以看 Taskflow:异步任务(Asynchronous Tasking)-CSDN博客 https://blog.csdn.net/jj147258369/category_12624347.html 这个博主,他理解得透彻一些。而我现在只是为了追求性能蛮试。
运行官例parallel_data_pipeline,结果:

将输出的拓扑图代码复制到在线查看网站:Graphviz Online

由pdf第3章可以知道,有5种任务调度模式:static task, dynamic task, composable task, condition
组合任务使开发者可以自行决定任务层次,可以通过组合模块化、重复的单元形成更大的任务。这可以提高产能和并行编程的可伸缩性。如下图C--D--E是静态线(主taskflow),而D1--D2--D是动态线,E是一个模块化任务单元(单独的一个taskflow)。


而下图是一个不正确的组合任务示例:因为这两个相同的模块化任务F1会导致竞争???
我的实例是参考简单的官例写的,都是静态task,部分代码与输出如下:
拓扑图如下,这和我设计的流程是一致的:

可是性能对比好像并没有太大的提升???



是不是不该用静态,因为这并不是一条很顺的主线。应该用动态?组合?
我profile一下,按照官网:
讯享网
将这个json文件拷贝到Taskflow Profiler 下面的框中:
可以看到我的都是浅蓝色的,因为表示static即静态。末端的柱状图表示对每个task根据耗时排序的结果。鼠标点击任意位置即可出现task名称以及相关信息:
左边显示的E0即Executor0,因为我的确只创建了1个executor。W即表示Worker,这4个worker自动生成的?L0表示Level0,也是自动生成?

可以看到主要是W1最耗时,怎么继续优化我想想




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/154543.html