Double lecture in the course Topics in Programming Languages: Parallel Functional Programming.
Geoffrey Mainland from Microsoft Research in Cambridge will give a double lecture in the course Topics in Programming Languages: Parallel Functional Programming.
These lectures are hereby also announced as open talks.
Title (starts at 13:15): Nikola: Embedding Compiled GPU Functions in Haskell
I will describe Nikola, a first-order language of array computations embedded in Haskell that compiles to GPUs via CUDA using a new set of type-directed techniques to support re-usable computations. Nikola automatically handles a range of low-level details for Haskell programmers, such as marshaling data to/from the GPU, size inference for buffers, memory management, and automatic loop parallelization.
Additionally, Nikola supports both compile-time and run-time code generation, making it possible for programmers to choose when and where to specialize embedded programs.
Title: Nested Data Parallelism in Haskell
Flat data parallelism provides a fast, scalable execution model for parallel computation, but its programming model is limiting. In contrast, nested data parallelism provides a flexible programming model, but efficient execution is a challenge. NESL showed that, in principle, once can combine the nested data parallel programming model with the efficient execution model of flat data parellelism. In this talk I will describe Data Parallel Haskell, a modern realization of the ideas behind NESL as implemented in the GHC compiler. I will also discuss an alternative approach to executing nested data parallel programs that we have recently begun implementing in GHC.