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).
Originalsprog | Engelsk |
---|---|
Titel | Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |
Antal sider | 16 |
Forlag | Association for Computing Machinery |
Publikationsdato | 2017 |
Sider | 556-571 |
ISBN (Elektronisk) | 978-1-4503-4988-8 |
DOI | |
Status | Udgivet - 2017 |
Begivenhed | 38th ACM SIGPLAN Conference on Programming Language Design and Implementation - Barcelona, Spanien Varighed: 18 jun. 2017 → 23 jun. 2017 Konferencens nummer: 38 |
Konference
Konference | 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |
---|---|
Nummer | 38 |
Land/Område | Spanien |
By | Barcelona |
Periode | 18/06/2017 → 23/06/2017 |