SYCL MLIR Compiler Internship
The ideal candidate will be someone who has a strong interest in compilers, who is able to progress on tasks autonomously while sharing progress or blockers with their team. For reference and for further information on the kernel fusion extension, feel free to visit the kernel fusion extension proposal or the kernel fusion paper published in TACO.
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 small team of compiler developers investigating options for the future design of SYCL compilers.
- Develop MLIR passes with the help of the team.
- Develop passes to identify regions of memory read and/or write by work items of a SYCL compute kernel.
- Develop passes to identify how memory accesses overlap between two kernels to determine if two kernels can be fused and potentially to which type of memory a buffer can be promoted to.
- Learn about Clang, LLVM, MLIR.
- Learn about heterogeneous programming and language design, particularly for SYCL.
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 MLIR.
- Knowledge of polyhedral compilation.
- Knowledge of parallel IRs such as SPIR-V or PTX.
- 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.