Array abstractions for GPU programming - PhD Defense by Martin Dybdal
The shift towards massively parallel hardware platforms for high-performance computing tasks has introduced a need for improved programming models that facilitate ease of reasoning for both users and compiler optimization.
A promising direction is the field of functional data-parallel programming, for which functional invariants can be utilized by optimizing compilers to perform large program transformations automatically. However, the previous work in this area allow users only limited ability to reason about the performance of algorithms. For this reason, such languages have yet to see wide industrial adoption.
We present two programming languages that attempt at both supporting industrial applications and providing reasoning tools for hierarchical data-parallel architectures, such as GPUs.
First, we present TAIL, an array based intermediate language and compiler framework for compiling a large subset of APL, a language which have been used in the financial industry for decades. The TAIL language is a typed functional intermediate language that allows compilation to data-parallel platforms, thereby providing high-performance at the fingertips of APL programmers.
Second, we present FCL, a purely functional data-parallel language, that allows for expressing data-parallel algorithms in a fashion where users at a low-level can reason about data-movement through the memory hierarchy and control fusion will and will not happen. We demonstrate through a number of micro benchmarks that FCL compiles to efficient GPU code.
Chairman: Associate Professor Andrzej Filinski, Department of Computer Science, University of Copenhagen, Denmark
Professor Gabriele Keller, University of New South Wales, Australia
Professor Peter Sestoft, IT University of Copenhagen, Denmark
Associate Professor Martin Elsman, Department of Computer Science, University of Copenhagen
For an electronic copy of the thesis, please contact PhDadmin@di.ku.dk