Futhark: purely functional GPU-programming with nested parallelism and in-place array updates

Publikation: Bidrag til bog/antologi/rapportKonferencebidrag i proceedingsForskningfagfællebedømt

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).

OriginalsprogEngelsk
TitelProceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
Antal sider16
ForlagAssociation for Computing Machinery
Publikationsdato2017
Sider556-571
ISBN (Elektronisk)978-1-4503-4988-8
DOI
StatusUdgivet - 2017
Begivenhed38th ACM SIGPLAN Conference on Programming Language Design and Implementation - Barcelona, Spanien
Varighed: 18 jun. 201723 jun. 2017
Konferencens nummer: 38

Konference

Konference38th ACM SIGPLAN Conference on Programming Language Design and Implementation
Nummer38
LandSpanien
ByBarcelona
Periode18/06/201723/06/2017

ID: 184140914