Research Projects

  • ELEVATE is a language for describing optimization strategies in a composable way.

  • RISE is a functional pattern-based data-parallel language. Programs are expressed at a high level in RISE. Programs are then transformed using a set of rewrite rules that encode implementation and optimization choices. The Shine compiler generates high-performance parallel C or OpenCL code while preserving the optimization choices made during rewriting.
    We are currently actively working on a prototype implementation in Scala available on GitHub as well as an implementation in of RISE in MLIR that is also available on GitHub.
    RISE is a spiritual successor to the Lift project.

  • Lift is a project aiming to achieve performance portability across modern parallel architectures. The Lift compiler transforms a program expressed in the high-level Lift programming language into optimised low-level OpenCL code. In this transformation optimisations are automatically explored using a set of rewrite rules. Lift is open source software available on GitHub. Lift has been described in multiple research publications and is developed by a research team including multiple PhD students based in Scotland and Germany.

  • PACXX allows programming of accelerators with modern C++. PACXX is developed by Michael Haidl at the University of Münster. In a series of collaborative publications we explore challenges of heterogeneous compiler implementations and the design of modern C++ range-based libraries for parallel programming. PACXX is open source software available on Github.

  • GPU Compilation for Interpreted Languages is the one of the first solutions for compiling a dynamic interpreted programming language – namely R – to GPU code. The generation of GPU code happens at runtime after crucial information of the program, such as data types, have been observed by profiling. Juan Fumero has developed our implementation which is described in our recent paper and is available on Bitbucket.

  • Marawacc is a solution for GPU programming from Java. Marawacc combines a library interface similar to the stream API from Java 8 and a compiler which generates OpenCL code from Java byte code at runtime. Data management optimisations eliminate the overhead of data marshalling. Marawacc is open source software available on Bitbucket. Marawacc has been described in multiple publications and has been developed by Juan Fumero.

  • SkelCL is a library providing high-level abstractions to alleviate programming of modern parallel heterogeneous systems comprising of multi-core CPUs and GPUs. SkelCL is open source software available on GitHub. SkelCL has been described in multiple research publications. SkelCL is no longer under active development.