Tobias Grosser

Compiler Social - 22.02.23

Logo

We invite fellow researchers, students, Edinburgh-based developers, geeks, ... interested in compilers and code generation in the broadest sense!

Victor Lomüller's talk Towards MLIR-based single pass SYCL compilation kicks off our first Edinburgh Compiler Social. Afterwards we chat, hack, and socialize while sharing food and refreshments!

!! Register here to help us arrange catering !!

  • Date: Wednesday, 22.02.2023
  • Time: 16:30 - 19:30
  • Room: G07
  • Location: Informatics Forum @ 10 Crichton Street
  • Organizers: Arjun Pitchanathan & Tobias Grosser

Talk: Towards MLIR-based single pass SYCL compilation

The introduction of MLIR gave the infrastructure to write modular and progressive compilers where a high-level operation is progressively lowered to retain the semantics for as long as needed. This enabled domain-specific compilers to be built efficiently and allowed general purpose compilers to perform language specific optimizations. This creates an interesting playground for the representation of heterogeneous programming models and SYCL is no exception.

SYCL is a C++ heterogeneous programming model, it offers to execute kernels via what looks like an API to the user. The compiler is then in charge of outlining kernels so they can be bundled into binaries for different accelerators (like GPUs, FPGAs, or others). The common approach applied is to use a multi-pass compilation process. Each pass starts from the source and only processes it towards a certain objective: process the device side to produce a SPIR-V module of the kernels or process the host side to build a traditional ELF object. This approach causes problems when we want to perform host-device boundary or inter-kernel optimizations.

In this presentation, we will present our work on the use of MLIR to represent and optimize SYCL programs, starting from what SYCL is, how it is modelled and used in our project and, as this is an active project, where are we going with it.

Victor Lomüller is Principal Software Engineer at Codeplay Software, he is currently working as a research engineer on compilation and programming models. He has worked on many SYCL related projects, but principally on ComputeCPP and DPC++'s compiler. He is also a contributor to the SYCL and SPIR-V specifications. Prior to Codeplay, he received his Ph.D. in compiler from the University of Grenoble and the Commissariat aux Energie Atomique (CEA) in 2014 where he focused on low overhead runtime code specialization.