UDEL banner
Home
Projects
Résumé

Projects

ROSE Compiler

ROSE Compiler website

Using clang frontend

Now ROSE Compiler use Edison Design Group C/C++ frontend to parse C and C++. This frontend is a proprietary code and can only be distributed as binary, preventing frontend experimentations (ie: language modification) in ROSE.
Clang, C language family frontend for LLVM, is an open source frontend. It use a high-level and modern C++ AST representation.
Having clang as C/C++ frontend for ROSE Compiler will enable to build transformations and analysis tools 100% open-source.
The C support will be realized soon!

GPGPU support

As an early work on ROSE Compiler, I was charged to implement CUDA and OpenCL support. I added AST representation for the different specific constructs of these languages (as CUDA kernel call, and specific type/function modifiers).
ROSE Compiler have OpenCL and CUDA unparsing capabilities, which are used in OpenCL and CUDA code generation projects.
At this time, ROSE only had EDG C/C++ frontend and I modified it to parse CUDA code. Now as clang support CUDA and OpenCL (even if it is only partial), ROSE Compiler will soon support parsing OpenCL and CUDA.
The OpenCL and CUDA support using clang will be released at the same time than the C support.

Polyhedral Model

The polyhedral model is a powerful mathematical representation of statically controlled loop nest (bounds of the loop are known at compile time). It have been successfully use for code optimization and automatic parallelization.

Auto-tuning

Our research group have demonstrated that a polyhedral compiler (PoCC) can be successfully driven by using performance prediction. We have also show that graph based representation of program (as Control Flow Graph) can be use as input of the model and out-perform other state of the art techniques.
I am working on using polyhedric representations of program as input of the model. The polyhedric representation of a loop nest encompass both the Control Flow Graph and the Data Flow Graph (in the limited scope of statically controled loops).
This work should be used to drive PoCC and R-Stream (polyhedral compiler from Reservoir Lab).

(Semi) Automatic Parallelization

I plan to use the polyhedral model to detect potential target for automatic parallelization. One of the main issue with the polyhedral model is its limited scope. I developed a analysis tools using ROSE which automatically discover statically controlled loops. It could be use to do partial modeling of programs and return information to the user on which part of the application should be modified/annotated to enable the use of polyhedral compiler like PoCC or R-Stream.

OpenCL

OpenCl kernel optimization

Recently a binding of PoCC (Polyhedral C Compiler) to ROSE Compiler have been release. I want to use the new OpenCL capability of ROSE to optimize OpenCL kernels.
It is also interesting to look at the work group of OpenCL as a polyhedron and take it in consideration when optimizing the kernels, or even modifying the geometry of this work group to increase the computation intensity of the kernel.

UPC to OpenCL

ROSE Compiler accept UPC code as input, it seems interresting to automatically generate OpenCL implementation of UPC codes. It can lead to some hybrid applications using both UPC and OpenCL.
View my profile on LinkedIn