The Taskflow project addresses the long-standing question: How can we make it easier for developers to write parallel and heterogeneous programs with high performance and simultaneous high productivity? Taskflow develops a simple and powerful task programming model to enable efficient implementations of heterogeneous decomposition strategies. Our programming model empowers users with both static and dynamic task graph constructions to incorporate a broad range of computational patterns including hybrid CPU-GPU computing, dynamic control flow, and irregularity. We develop an efficient heterogeneous work-stealing strategy that adapts worker threads to available task parallelism at any time during the graph execution. We have demonstrated promising performance of Taskflow on both micro-benchmark and real-world applications. As an example, we solved a large machine learning workload by up to 1.5x faster, 1.6x less memory, and 1.7x fewer lines of code than two industrial-strength systems, oneTBB and StarPU, on a machine of 40 CPUs and 4 GPUs.
翻译:任务流项目解决了一个长期存在的问题: 如何让开发者更容易写出具有高性能和同时高生产率的平行和多样化程序? 任务流开发了一个简单而有力的任务编程模型,以便能够有效地实施不同分解战略。 我们的编程模型使拥有静态和动态任务图结构的用户能够纳入一系列广泛的计算模式,包括混合的CPU-GPU计算、动态控制流程和不规则性。 我们开发了一个高效的多样化工作图案战略,使工人的线索在图形执行期间随时适应任务平行状态。 我们已经展示了在微型基准和现实世界应用程序上任务流的良好表现。 举例来说,我们解决了一个大型机器学习工作量问题的方法是1.5x更快、1.6x内存和1.7x少于两个工业强度系统的代码线,一个是TBB和StarPU,一个是40个计算机和4个GPU的机器。