TY - GEN
T1 - High-performance defunctionalisation in futhark
AU - Hovgaard, Anders Kiel
AU - Henriksen, Troels
AU - Elsman, Martin
PY - 2019
Y1 - 2019
N2 - General-purpose massively parallel processors, such as GPUs, have become common, but are difficult to program. Pure functional programming can be a solution, as it guarantees referential transparency, and provides useful combinators for expressing data-parallel computations. Unfortunately, higher-order functions cannot be efficiently implemented on GPUs by the usual means. In this paper, we present a defunctionalisation transformation that relies on type-based restrictions on the use of expressions of functional type, such that we can completely eliminate higher-order functions in all cases, without introducing any branching. We prove the correctness of the transformation and discuss its implementation in Futhark, a data-parallel functional language that generates GPU code. The use of these restricted higher-order functions has no impact on run-time performance, and we argue that we gain many of the benefits of general higher-order functions, without in most practical cases being hindered by the restrictions.
AB - General-purpose massively parallel processors, such as GPUs, have become common, but are difficult to program. Pure functional programming can be a solution, as it guarantees referential transparency, and provides useful combinators for expressing data-parallel computations. Unfortunately, higher-order functions cannot be efficiently implemented on GPUs by the usual means. In this paper, we present a defunctionalisation transformation that relies on type-based restrictions on the use of expressions of functional type, such that we can completely eliminate higher-order functions in all cases, without introducing any branching. We prove the correctness of the transformation and discuss its implementation in Futhark, a data-parallel functional language that generates GPU code. The use of these restricted higher-order functions has no impact on run-time performance, and we argue that we gain many of the benefits of general higher-order functions, without in most practical cases being hindered by the restrictions.
KW - Compilers
KW - Defunctionalisation
KW - GPGPU
UR - http://www.scopus.com/inward/record.url?scp=85065470408&partnerID=8YFLogxK
U2 - 10.1007/978-3-030-18506-0_7
DO - 10.1007/978-3-030-18506-0_7
M3 - Article in proceedings
AN - SCOPUS:85065470408
SN - 9783030185053
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 136
EP - 156
BT - Trends in Functional Programming
A2 - Pałka, Michał
A2 - Myreen, Magnus
PB - Springer
T2 - 19th International Symposium on Trends in Functional Programming, TFP 2018
Y2 - 11 June 2018 through 13 June 2018
ER -