University of Cambridge > Talks.cam > Computer Laboratory Programming Research Group Seminar > Gotta Go Fast: Futhark - A Data-Parallel Purely Functional Language and its Optimising GPGPU Compiler

Gotta Go Fast: Futhark - A Data-Parallel Purely Functional Language and its Optimising GPGPU Compiler

Add to your list(s) Download to your calendar using vCal

If you have a question about this talk, please contact Dominic Orchard.

Note unusual day and time

Futhark is a small programming language designed to be compiled to efficient GPU code. It is a statically typed, data-parallel, and purely functional array language, and comes with a optimising ahead-of-time compiler that generates GPU code via OpenCL. Futhark is not designed for graphics programming, but instead uses the compute power of the GPU to accelerate data-parallel array computations (“GPGPU”). We support regular nested data-parallelism, as well as a form of imperative-style in-place modification of arrays, while still preserving the overall purity of the language via the use of a uniqueness type system.

This talk presents the design of the Futhark language, as well as outlines several of the key compiler optimisations that have enabled performance comparable to hand-written OpenCL code. Our compiler seeks a common ground between functional and imperative approaches. Through the use of a functional source language, we obtain strong invariants that simplify and empower the application of traditional compiler optimisation techniques. For example (i) aggressively restructuring transformations such as fusion, (ii) loop interchange and distribution to extract flat parallel kernels from nested parallel source programs, and (iii) data layout transformations to ensure coalesced memory access on GPUs.

This talk is part of the Computer Laboratory Programming Research Group Seminar series.

Tell a friend about this talk:

This talk is included in these lists:

Note that ex-directory lists are not shown.

 

© 2006-2019 Talks.cam, University of Cambridge. Contact Us | Help and Documentation | Privacy and Publicity