Pipeline is a fundamental parallel programming pattern. Mainstream pipeline programming frameworks count on data abstractions to perform pipeline scheduling. This design is convenient for data-centric pipeline applications but inefficient for algorithms that only exploit task parallelism in pipeline. As a result, we introduce a new task-parallel pipeline programming framework called Pipeflow. Pipeflow does not design yet another data abstraction but focuses on the pipeline scheduling itself, enabling more efficient implementation of task-parallel pipeline algorithms than existing frameworks. We have evaluated Pipeflow on both micro-benchmarks and real-world applications. As an example, Pipeflow outperforms oneTBB 24% and 10% faster in a VLSI placement and a timing analysis workloads that adopt pipeline parallelism to speed up runtimes, respectively.
翻译:管道是一种基本的平行编程模式。 主流管道编程框架依靠数据抽象来完成管道排期。 这一设计对于以数据为中心的管道应用来说是方便的,但对于只利用管道中任务平行的算法来说是低效的。 因此,我们引入了新的任务平行管道编程框架,称为管道流。 管道流没有设计另一个数据抽象,而是侧重于管道排程本身,使得任务平行管道算法比现有框架能够更有效地实施。 我们评估了微型和现实世界应用中的管道流。 例如,管道流出一个速度更快的1TBB24%和10%的VLSI布局和时间分析工作量,采用管道平行方式加快运行时间。