Gotta Go Fast: Futhark - A Data-Parallel Purely Functional Language and its Optimising GPGPU Compiler
- đ¤ Speaker: Troels Henriksen (DIKU) đ Website
- đ Date & Time: Wednesday 11 May 2016, 11:30 - 12:30
- đ Venue: FW26
Abstract
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.
Series This talk is part of the Computer Laboratory Programming Research Group Seminar series.
Included in Lists
- All Talks (aka the CURE list)
- bld31
- Cambridge Centre for Data-Driven Discovery (C2D3)
- Cambridge talks
- Chris Davis' list
- Computer Laboratory Programming Research Group Seminar
- Department of Computer Science and Technology talks and seminars
- FW26
- Interested Talks
- ndk22's list
- ob366-ai4er
- rp587
- School of Technology
- Trust & Technology Initiative - interesting events
- yk449
Note: Ex-directory lists are not shown.
![[Talks.cam]](/static/images/talkslogosmall.gif)



Wednesday 11 May 2016, 11:30-12:30