DPC++ NVPTX/AMDGCN Compiler Optimization Internship
SYCL is a C++-based heterogeneous programming standard for accelerator computing and oneAPI is an open-source ecosystem that includes SYCL support and library integration. The oneAPI framework provides a full stack of compilers, runtimes, libraries and tools for developing heterogeneous applications for various different domains. Within that framework Codeplay implements and maintains support for SYCL on NVIDIA and AMD GPUs. A big part of this effort is optimizing the SYCL compiler such that the generated code has comparable performance to the native CUDA and HIP compilers. This internship will involve identifying areas where applications are not matching native performance due to missing compiler optimizations, and then creating implementations of those optimizations in the NVIDIA and AMD LLVM compiler backends.
The ideal candidate will be someone who has a strong interest in compilers and/or performance optimizations, and who is able to progress on tasks autonomously while sharing progress or blockers with their team.
This internship is on offer for a duration of 3 months. Although we usually offer internships for the summer, we are delighted to accept applications for longer or shorter internships and many of our interns have stayed with us to do university placement years or have become permanent members of our team.
Area of Responsibilities
- Work as part of a development team supporting oneAPI on NVIDIA and AMD GPUs.
- Work on the implementation of SYCL on NVIDIA and AMD targets.
- Learn about SYCL, DPC++, Clang, and LLVM from experienced engineers.
- Design and implement compiler optimizations for the DPC++ compiler such as function inlining, loop unrolling, code generation and diagnostics.
- Contribute patches to the DPC++ project or upstream LLVM.
- Follow and contribute to performance guidelines for targeting NVIDIA and AMD GPUs with DPC++.
- Build and run SYCL benchmarks as part of an iterative process to evaluate the performance of DPC++ and the impact of any improvements.
- Identify possible additional benchmarks for evaluating the performance of DPC++, with the support of the rest of the team.
The ideal candidate is a self-motivated individual who can work through a problem from start to finish, meet deadlines as required to support software projects, and has the ability to work under pressure. You will be working on technology that is seldom announced to the public and could be several years away from public release, so confidentiality is critical. You should be able to work both independently and collaboratively within teams of varying skill sets and expertise. You should be welcoming towards, and able to adapt to, the introduction of new technologies, responsibilities and projects, as Codeplay works with cutting-edge technology and takes on a diverse range of projects.
- C++ development experience.
- Some level of compiler experience, e.g. coursework or research project.
- Good written English and communication skills.
- Working knowledge of source control and configuration management tools.
Knowledge and/or experience of any of the following would be useful for the role, but are not essential. You must be able to learn new skills, but will be given support from Codeplay's team to get you up to speed.
- Knowledge of Clang or LLVM.
- Knowledge of NVPTX or AMDGCN.
- Knowledge of heterogeneous programming, e.g. CUDA, SYCL, OpenCL, etc.
- Knowledge of parallel architectures, such as GPUs.
- Knowledge of build systems (e.g. CMake) and compiler tool-chains.
- Experience working in a team.