论文标题
KVIK:基于任务的中间软件,具有可组合的调度策略
Kvik: A task based middleware with composable scheduling policies
论文作者
论文摘要
在本文中,我们介绍KVIK:基于任务的“中间件”的实现,用于共享内存并行编程,以构建的人造丝图书馆的顶部构建的Rust语言。我们设计了一个系统,允许最终用户对几个任务分类的调度程序进行精心调整。其中,我们建议通过将任务拆分以窃取请求的任务来实现自适应调度程序,从而将创建任务的创建(拆分)减少到最低。描述了另一个允许将计算变为并行操作序列的重要调度程序。该操作员证明自己对于可中断的计算特别有用。我们展示了不同类型的调度程序的不同代码示例。我们用一套大量利用合成性的基准来结束工作。特别是,与最先进的并行排序实现相比,我们提出了一个并行稳定的排序实现,最高1.5倍。
In this paper we present Kvik: an implementation of a task-based "middleware" for shared memory parallel programming in the Rust language built on top of the Rayon library. We devise a system allowing several task-splitting schedulers to be finely tuned by the end users. Among these, we propose an implementation of an adaptive scheduler reducing tasks creations (splits) to bare minimum by linking tasks splitting to steal requests. Another important scheduler that allows turning computations into sequences of parallel operations is described. This operator proves itself particularly useful for interruptible computations. We exhibit different code examples well suited for different types of schedulers. We conclude our work with a set of benchmarks making heavy use of composability. In particular we present a parallel stable sort implementation with up to 1.5x more speedup when compared to the state-of-the-art parallel sorting implementation.