LLVM-supported code translation from C to CUDA
The newly arrived general-purpose GPUs provide tremendous computing power, but also bring extra difficulties with respect to parallel programming of these new devices. An ideal scenario will therefore be to have an automated code generator that translates input C code into output CUDA code capable of running on Nvidia GPUs. This master project will use the well-known compiler infrastructure LLVM to realize the above goal, with an additional objective of also extending the applicability to heterogeneous CPU-GPU systems.
Clang is LLVM's frontend for the C programming language
What you will do:
- Use LLVM's Clang frontend to transform annotated C code into the internal representation (IR) used by LLVM.
- Apply the LLVM optimizer for the GPU target architecture.
- Adapt the LLVM code generator to produce an output CUDA code.
- Create an automated tool that encompasses the above steps.
- Compare with the existing C-to-CUDA translator Mint, with respect to the performance of the generated CUDA code.
- Extend the new automated tool to also generate hybrid OpenMP and CUDA code, to target heterogeneous CPU-GPU systems.
What you will learn:
- Advanced use of the LLVM compiler infrastructure
- Basic CUDA programming
- Basic OpenMP programming
- How to use heterogeneous CPU-GPU systems
- Good (serial) programming skills
- Entrance-level knowledge of numerical methods
- A lot of courage and dedication