High level languages for parallelism need to be performant on a wide range of workloads: they may be data-parallel and/or task-parallel, as well as regular or irregular. Scheduling, which is implemented via an interaction between the runtime system and the generated code, has a significant impact on the performance and scalability of these languages. In this paper, we demonstrate the integration of Work Assisting, our dynamic scheduler combining task-parallel and data-parallel schedulers, in combinator-based parallel array languages. These languages require fusion for high performance, and often feature scans to support irregular computations. Chained scans, the fastest parallel scans in our experiments, require a data-parallel scheduler as provided by Work Assisting. We show how code can be generated with support for fusion and chained scans, which can also fuse better than classic three-phase scans. We present the integration of Work Assisting into an actual compiler and runtime system of a such a language, Accelerate, and evaluate its performance in this context for a range of applications.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Scheduling Task and Data Parallelism in Array Languages with Work Assisting

  • Ivo Gabe de Wolff,
  • David van Balen,
  • Gabriele K. Keller

摘要

High level languages for parallelism need to be performant on a wide range of workloads: they may be data-parallel and/or task-parallel, as well as regular or irregular. Scheduling, which is implemented via an interaction between the runtime system and the generated code, has a significant impact on the performance and scalability of these languages. In this paper, we demonstrate the integration of Work Assisting, our dynamic scheduler combining task-parallel and data-parallel schedulers, in combinator-based parallel array languages. These languages require fusion for high performance, and often feature scans to support irregular computations. Chained scans, the fastest parallel scans in our experiments, require a data-parallel scheduler as provided by Work Assisting. We show how code can be generated with support for fusion and chained scans, which can also fuse better than classic three-phase scans. We present the integration of Work Assisting into an actual compiler and runtime system of a such a language, Accelerate, and evaluate its performance in this context for a range of applications.