QUICKBITS
Engaging discussions at Euro LLVM 2024
Kajsa Eriksson Rosenqvist
SOFTWARE DEVELOPER
As a Software Engineer, Kajsa is responsible for a number of quantum and development infrastructure projects around quantum chip simulation and data management systems. Kajsa holds an M.Sc. in Electrical Engineering from Lund University (Sweden) and a dual M.Sc. in Space Instrumentation and Technology from Université Paul Sabatier (France) and Luleå University of Technology (Sweden).
Last month I had the opportunity to attend the European LLVM Developers’ Meeting, organised by the LLVM Foundation and volunteers within the LLVM community. This annual event sees people from the entire LLVM Project community gather to showcase and discuss development of and integration with LLVM, MLIR, Clang, and related subprojects. If you are a developer interested in or working with compiler development at any level, and based in Europe, this is the event for you.
The LLVM community is making a big effort to lower the barrier to entry and improve inclusivity so now is a great time to get involved. In addition to a great mix of keynotes and technical talks the conference had multiple sessions around how this can be done: from assigning a “mentor” to the good-first-issue tasks, making an easy to use hello world example setup (as install and build can be tricky and device dependent), to finding new incentives to do the “boring” tasks, like writing documentation or improving pipelines.
Introductions and tutorials
As a novice in the LLVM community and someone who has a vested interest in getting to a deeper understanding of the full ecosystem there were a couple of really interesting talks on the subject of learning.
Teaching MLIR Concepts to Undergraduate Students by Mathieu Fehr and Sasha Lopoukhine focused on their experience of creating a university course that provides their students with the best odds at success possible. They covered how they use ChocoPy, a python-like programming language designed for compiler courses, to lower the entry level hurdle,and how they structured the course with intention and achieved a smoother learning curve.
Another talk on a similar topic was Zero to Hero: Programming Nvidia Hopper Tensor Core with MLIR’s NVGPU Dialect by Guray Ozen. This showcased a 6 chapter interactive tutorial that walks you through how to make changes to your software in order to take advantage of the Nvidia Hopper device’s different architecture. The tutorial chapters introduce two python decorators and are available on GitHub.
New Dialects and Languages
LLVM achieves a lot of its flexibility through MLIR and the concept of Dialects. A dialect is simply speaking a plugin that offers extended feature support to LLVM and the conference had multiple sessions on improvements to existing dialects as well as new ones.
Linalg vs. MDH – A Comparison of Two MLIR Dialects by Jens Hunloh, Lars Hunloh, Richard Schulze, Sergei Gorlatch, Ari Rasch, and Tobias Grosser introduced the new dialect MDH (Multi-Dimensional Homomorphisms) which is their work-in-progress attempt at a better way of achieving the linear algebra functionality also available through Linalg.
The Carbon: An Experiment in Different Tradeoffs panel had Chandler Carruth, Jon Ross-Perkins and Richard Smith discussing and answering questions on their experience with building the new language Carbon from scratch. They talked about how they are trying to learn from decisions made in C++, ensuring all design decisions are documented, and how they want the project to be an open discussion as opposed to being tied directly to developers from specific companies.
As someone working in the quantum computing field, both of these sessions were extremely interesting to me. Unlike its predecessor, quantum computing lacks a standardised framework for translating human-readable quantum programs into Quantum Processing Unit (QPU) executions, but it won’t stay that way. To begin breaking down these barriers to accessing quantum capability, we have built critical tools such as QAT, our low-level quantum compiler and runtime which facilitates executing quantum IRs such as QASM, OpenPulse and QIR against QPU drivers. By building this, we were able to facilitate the execution of largely-optimised code, converted into abstract pulse-level and hardware-level instructions, which are then transformed and delivered to an appropriate driver. Not to mention, we also have RASQAL: our low-level hybrid runtime and optimizer, which powers our more advanced QIR features.
As the field matures the industry will have to converge on one or a few core concepts that all players will need to support in order to have a place in the ecosystem. This means that it’s incredibly important for us to be part of this discussion and development. In my personal opinion LLVM, MLIR and quantum dialects make up the most promising path forward for this and I’m convinced that if we design it right we will see a future where all QC vendors are supported by the LLVM stack which in turn can be integrated into just about all high level languages either directly or through bindings like CPython. There are good existing quantum MLIR implementations already available however I think it’s important to note that while MLIR allows you to create multiple dialects that implement similar outcomes (as shown by Linalg vs MDH), companies like OQC have a continuous interest in ensuring that the future standard is aligned to meet the progression and requirements of the industry.
Overall, the event was a great space to keep advancing my understanding and network with others in my field. I am excited to apply the knowledge to our upcoming projects and join OQC at the Euro LLVM event in 2025!
Join our newsletter for more articles like this
By clicking ‘sign up’ you’re confirming that you agree with our Terms & Conditions