Abstract
Futhark is a purely functional data-parallel array language that offers a machine-neutral programming model and an optimising compiler that generates OpenCL code for GPUs. This paper presents the design and implementation of three key features of Futhark that seek a suitable middle ground with imperative approaches. First, in order to express efficient code inside the parallel constructs, we introduce a simple type system for in-place updates that ensures referential transparency and supports equational reasoning. Second, we furnish Futhark with parallel operators capable of expressing efficient strength-reduced code, along with their fusion rules. Third, we present a flattening transformation aimed at enhancing the degree of parallelism that (i) builds on loop interchange and distribution but uses higher-order reasoning rather than array-dependence analysis, and (ii) still allows further locality-of-reference optimisations. Finally, an evaluation on 16 benchmarks demonstrates the impact of the language and compiler features and shows application-level performance competitive with hand-written GPU code. Copyright is held by the owner/author(s).
Original language | English |
---|---|
Title of host publication | Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |
Number of pages | 16 |
Publisher | Association for Computing Machinery |
Publication date | 2017 |
Pages | 556-571 |
ISBN (Electronic) | 978-1-4503-4988-8 |
DOIs | |
Publication status | Published - 2017 |
Event | 38th ACM SIGPLAN Conference on Programming Language Design and Implementation - Barcelona, Spain Duration: 18 Jun 2017 → 23 Jun 2017 Conference number: 38 |
Conference
Conference | 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |
---|---|
Number | 38 |
Country/Territory | Spain |
City | Barcelona |
Period | 18/06/2017 → 23/06/2017 |
Keywords
- Compilers
- Functional language
- GPGPU
- Parallel