Troels Henriksen

I am a postdoc at the University of Copenhagen, where I work on data-parallel functional programming. My main work is on the language Futhark, which is available under a free software license. My work focuses on issues related to the interplay between high-level abstractions and their efficient realisation on concrete hardware. Specifically, I believe that functional programming provides a useful high-level vocabulary for expressing parallel computation, but that most existing functional languages are hampered in their performance potential by features that inhibit efficient code. I study how a high-level functional language can be designed from the ground up for efficient compilation to parallel code on efficient but "hostile" (in the sense of being hard to program) parallel hardware. Concretely, I have developed a small functional array language, Futhark and an optimising compiler that generates fairly efficient GPU code.


URLs for Troels Henriksen

No URLs found.


Talk Futhark: A data-parallel pure functional programming language compiling to GPU

Computers are all about computational performance. There is nothing your computer can do that a human could not also do. The only advantage of the computer is that it does it much faster (and cheaper). However, modern computers are difficult to program if we actually want to take advantage of their potential. There are a variety of reasons for that: the need for significant amounts of parallelism, performance booby traps that must be avoided, and the memory wall. The situation is even more complex when it comes to restricted high-performance processors like GPUs. Legacy ways of programming will not suffice. This talk is about why these problems are intrinsic to our current understanding of microprocessor manufacturing and the laws of physics, how I have come to view the problem, and the potential solutions I see.

In particular, I will talk about how GPUs differ from CPUs - what makes them fast, and at the same time so very hard to program. I will (superficially) describe different solutions to GPU programming in various languages, with somewhat of a bias towards functional approaches. Mostly, however, I will talk a programming language I have been implementing as part of my PhD at DIKU. The language, called Futhark, is a high-level pure functional programming language that has been carefully designed to permit compilation to efficient GPU code, while not requiring any low-level GPU knowledge from the user. Our optimising compiler is able to generate code competitive with hand-written OpenCL programs, and usually beating other parallel languages.

I will show how easy it is to use Futhark for writing massively parallel functional programs that perform well on GPUs. I will also demonstrate how simple it can be interact with Futhark code from other languages. This mirrors our intended use case, where Futhark is used only for computationally heavy parts of an application that can profitably run on the GPU, with the CPU parts written in traditional languages.

Scheduled Instances of "Futhark: A data-parallel pure functional programming language compiling to GPU"