Master project description
TITLE: Functional Programming for GPUs

The goal of this project is to define static analyses, optimizations, and/or domain specific functional languages for GPU programming. Two possible research direction can be followed. The first one consists in introducing functional syntax for high level programming of GPUs. Boost::MPL is a C++ library which emulates many functional features. For instance a piece of code such as
template<class X,class N> 
struct exp : if_< equal_to<int_<0>,N>
                 , int_<1>
                 , times<X, exp<X, minus<N,int_<1> > >
                 > {};
can better be rendered in OCaml as follows
let rec exp x n = match n with
                   | 0 -> 1
                   | n -> x * exp x (n-1);;
The goal of the first direction of research will then be is to define a functional domain specific language that will be then compiled into C++ using the Boost::MPL library.

A second more theoretically grounded direction will devise type systems and/or other static analysis for Boost::MLP or QUAFF in order to get rid of several runtime checks. This work will be coupled with an optimization-oriented research. In particular the student will be asked to study semantic/observational equivalences of parallel constructions in order to devise optimizations of the compiled code.

Joint project with Véronique Benzaken and Joël Falcou, Laboratoire de Recherche en Informatique, University Paris XI.

Required background
  • Strong background in functional programming.
  • Acquaintance with C++. Basic knowledge of parsing (direction 1)
  • Type theory, concurrency theory, observational equivalences. (direction 2)
Strong background in functional programming.
References
  • [1] Falcou, J., Sérot, J., Chateau, T., and Lapresté, J. T. 2006. QUAFF: efficient C++ design for parallel skeletons. Parallel Comput. 32, 7 (Sep. 2006), 604-615. DOI
  • [2] THE BOOST MPL LIBRARY
Contacts
Giuseppe Castagna : PPS Laboratory, Université Paris 7.
Véronique Benzaken : LRI Laboratory, Université Paris Sud.
Joël Falcou : LRI Laboratory, Université Paris Sud.