arrow_back_ios Back to List

SYCL-MLIR Compiler Internship - Joint matrix support

SYCL is a C++-based heterogeneous programming standard for accelerator computing. Codeplay works on implementations of this standard and are investigating using the MLIR compiler framework to enable SYCL-aware optimizations at compile time. This includes allowing the creation of SYCL language extensions so that the programmer can provide more accurate descriptions of their program to enable compiler optimizations. The advantage of MLIR for the implementation of  such extensions is that compiler information for both the "host" code, that runs on the CPU, and the "device" code, that runs on the accelerator, can be considered together more easily allowing for optimizations that would not be possible based on knowledge of either side of the program alone.

The matrix extension allows user to target tensor hardware (AMX, XMX, tensor core etc.) with SYCL in a portable manner. However, plain DPC++ cannot optimize such code as it is too low level for LLVM to efficiently capture the semantic. The goal of this internship is to develop a support for the matrix extension into our MLIR compiler and explore efficient optimizations and lowering.

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.

The position is a full time (35hrs per week), fixed term opportunity. Although we usually offer internships for the summer, we are delighted to accept applications for internships between 10 weeks - 6 months. This Internship ooportunity is not available remotely and to offer full 'employee experience' will be based out of our head office in central Edinburgh. If sucessfull, you must be prepared to attend our offices daily for the entirty of your placement. The successful candidate must, by the start of their employment, have or have successfully obtained, the right to work in the UK.


Responsibilities

During this internship, you will be working with a small team of compiler developers investigating options for the future design of SYCL compilers and you will:

  • Learn about Clang, LLVM, MLIR.
  • Learn about heterogeneous programming and language design, particularly for SYCL.
  • Learn about hardware extensions of modern GPUs (AMX, Tensorcores).
  • Develop a representation for the matrix extension in MLIR with the help of the compiler team and libraries developers (users of the extension).
  • Develop MLIR passes and lowering with the help of the team to target SPIR-V.
  • If time allows
    • Study and develop optimizations for the matrix extension.
    • Develop support for CUDA.

What We Offer

Codeplay is internationally recognized as being at the forefront of software development technology. Working at Codeplay offers unique opportunities and challenges to learn new technologies and to get involved in shaping the software industry. Codeplay's projects range from: creating tools and tool sets (optimizing compilers, debuggers, profilers, programming models & APIs, test systems/suites, etc.) for brand-new unannounced next-generation hardware; developing and optimizing current machine learning (TensorFlow™) and computer vision applications; research and development into lowering the power consumption of mobile devices; and contributing to new programming models and software standards (e.g. C++, SYCL™, OpenCL™, Vulkan® and SPIR™-V).

Codeplay Software is a world pioneer in enabling acceleration technologies used in AI, HPC and automotive. Codeplay was established in 2002 in Edinburgh, Scotland and developed some of the first tools enabling complex software to be accelerated using graphics processors. Today, most AI software is developed using graphics processors designed for video games, and more recently specialised AI and computer vision accelerators. Codeplay continues to work with global technology leaders to make the latest complex AI systems programmable using open-standards based programming languages and allows application developers to quickly bring software to the market.  Codeplay is also deeply involved with the definition of open standards, especially OpenCL™, SPIR™, SYCL™, and Vulkan™ through The Khronos Group, and MISRA C++ for automotive.

  • A friendly and relaxed working environment where colleagues respect and support each other.
  • Learn from experienced colleagues: our staff frequently give company-wide knowledge-sharing presentations on new software and technology trends, personal projects and other relevant subjects.
  • Great career prospects within a growing company
  • Newstart mentoring scheme
  • Flexible working hours
  • Frequent company social events (social nights, pot luck lunches, gaming, karting, outdoor adventures, and more)

Required Skills

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.

Beneficial Skills

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 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.
  • Solid compiler design experience (SSA, CFG etc.)

Application Guidance

Any application which results in a job offer is conditional upon the candidate already having or successfully applying for the right to work in the UK. Codeplay is proud to be an Equal Opportunities employer. We celebrate and value diversity. We are committed to creating an inclusive environment for all employees, regardless of race, colour, gender, religion, national origin, ancestry, citizenship, disability, age, sexual orientation or any other characteristic protected by law. All employment is decided on the basis of qualifications, merit and business need and we strongly encourage applicants from all backgrounds and walks of life. If you have a disability or additional need that requires accommodation, just let us know.

The Cover Note/Letter is just as important as your CV/Resume, so please include one, stating why you believe you are a good fit for the position. If you have examples of relevant work or projects, we would love to see them, so please include links to them in your application.You should be studying towards a degree in a relevant subject; however, if you can prove skills and knowledge through portfolio work, projects or previous employment, then a degree is not essential.If you have C++ Code Samples (where relevant) please put the link to these on your application; Our system will only accept links to personal projects/GitHub accounts or PDF documents. 

We aim to close this advert on the 18th June 2023, so please look to get your application in prior to this date. We anticipate a high level of applications for this role and so reserve the right to close this vacancy prior to the closing date given.



Your application has been sent successfully. Someone should contact you within the next two working days to confirm we have received your application.

Position Closed

Unfortunately this position is currently closed. You can check by at a later date or you can click here to view our other available positions.