  Taskflow aims to streamline the building of parallel and heterogeneous
applications using a lightweight task graph-based approach. Taskflow introduces
an expressive task graph programming model to assist developers in the
implementation of parallel and heterogeneous decomposition strategies on a
heterogeneous computing platform. Our programming model distinguishes itself as
a very general class of task graph parallelism with in-graph control flow to
enable end-to-end parallel optimization. To support our model with high
performance, we design an efficient system runtime that solves many of the new
scheduling challenges arising out of our models and optimizes the performance
across latency, energy efficiency, and throughput. We have demonstrated the
promising performance of Taskflow in real-world applications. As an example,
Taskflow solves a large-scale machine learning workload up to 29% faster, 1.5x
less memory, and 1.9x higher throughput than the industrial system, oneTBB, on
a machine of 40 CPUs and 4 GPUs. We have opened the source of Taskflow and
deployed it to large numbers of users in the open-source community.
