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.


Metadata

To be recorded?: Yes

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

No URLs found.


Instances

  • Friday Aug. 17 13:00 - 14:00 at Speakers Tent

Speaker(s):