Note: The MLIR (Un)School is a dynamic event → Our Schedule evolves until and throughout the MLIR (Un)School.

Day 1 | Monday, Sep 8

Time MLIR Core @ Ground Floor Specialized 1 Specialized 2 Specialized 3
9:00 — Arrival —      
9:30 Welcome + Introductions
Tobias Grosser & Fabrice Rastello
     
10:00 Introductory Sessions I
Moderation: Tobias Grosser & Alexander Viand
     
11:00 — Coffee —      
11:30 Introductory sessions II
Moderation: Tobias Grosser & Alexander Viand
     
12:30 — Lunch —      
13:30 Introduction To MLIR - hands on (web)
Theo Degioanni, Mathieu Fehr, Sasha Lopoukhine
Quantum Computing
Samin Ishtiaq
Crypto & Zero Knowledge
Alexander Viand
Backend and ISA
Fabrice Rastello & Ayal Zaks
15:00 — Coffee —      
15:30 Introduction To MLIR - deep dive (pdf, pptx)
Mehdi Amini
Formal Semantics
Tobias Grosser
Scheduling & Search Space Exploration
Alex Zinenko
Hardware Accelerators
Kunwar Grover
17:00 End of day program      
17:45 — Drink Reception —      
18:30 — Formal Dinner —      
21:00 Open Program: e.g., hang out at college bar      
23:30 Last Drinks in College Bar      
00:00 College Bar Closes      

Day 2 | Tuesday, Sep 9

Time MLIR Core @ Ground Floor Specialized 1 Specialized 2 Specialized 3
9:00 — Arrival —      
9:30 Report from Expert Sessions on Plan for Week      
10:00 Peer-to-Peer Skillshare      
11:00 — Coffee —      
11:30 Peer-to-Peer Skillshare      
12:30 — Lunch —      
13:30 Define And Lower Your New Dialect (web)
Sylvain Noiry
Quantum Computing
Samin Ishtiaq
Crypto & Zero Knowledge
Alexander Viand
Backend and ISA
Fabrice Rastello & Ayal Zaks
15:00 — Coffee —      
15:30 Understanding Interfaces (pdf)
Matthias Springer
Formal Semantics
Tobias Grosser
Scheduling & Search Space Exploration
Alex Zinenko
Hardware Accelerators
Kunwar Grover
17:00 End of day program      
18:00 — Dinner @ Garden Restaurant Robinson College —      
19:00 Open Program: e.g., hang out at College Bar      
23:30 Last Drinks in College Bar      
00:00 College Bar Closes      

Day 3 | Wednesday, Sep 10

Time MLIR Core @ Ground Floor Syndicate Room 1 Syndicate Room 2 Syndicate Room 3
9:00 — Arrival —      
9:30 Hackathon / MLIR Clinic Working Group for Polyhedral Model in MLIR (pdf)
Guillaume Iooss
To compile for ML, I need an MLPlan
Fabrice Rastello
 
11:00 — Coffee —      
11:30 Hackathon / MLIR Clinic Software Pipelining for Kernel Code Generation (pdf)
Benoît Dupont de Dinechin
Defining Dialects Declaratively: The IRDL Roadmap
Theo Degioanni
 
12:30 — Lunch —      
13:30 Hackathon Specifying peephole optimizations with PDL
Sasha Lopoukhine
   
15:00 — Coffee —      
15:35 Social Events:
Punting @ Mill Lane
City Tour @ Workshop Venue (Foyer)
     
17:00 End of day program      
18:00 — Dinner @ Garden Restaurant —      
19:00 Open Program: e.g., hang out at College Bar      
23:30 Last Drinks in College Bar      
00:00 College Bar Closes      

Day 4 | Thursday, Sep 11

Time MLIR Core @ Ground Floor Syndicate Room 1 Syndicate Room 2 Syndicate Room 3
9:00 — Arrival —      
9:30 Hackathon      
11:00 — Coffee —      
11:30 Hackathon / MLIR Clinic      
12:30 — Lunch —      
13:30 Schedule Loop Nests with Transform (pdf)
Alex Zinenko
     
15:00 — Coffee —      
15:30 Discover Low-Level MLIR Abstractions (web)
Kunwar Grover
Expert Track & Free Hack    
16:20 Gathering Feedback and Joint Closing of the (Un)School      
17:00 End of day program      
18:00 — Dinner @ Garden Restaurant —      
19:00 Open Program / Bar      
23:30 Last Drinks in College Bar      
00:00 College Bar Closes      

Day 5 | Friday, Sep 12

See Open Day - MLIR (Un)School Meets Compiler Community.

Talk Abstracts

Introduction To MLIR - hands on (web), Sasha Lopoukhine, Mathieu Fehr, Théo Degioanni

This hands-on, introductory class is your perfect entry point to MLIR (Multi-Level Intermediate Representation). We will start from the ground up, demystifying what MLIR is and exploring its intermediate representation (IR) through a simple array DSL. Through a series of interactive examples, you will learn how to understand MLIR IR and apply passes to transform it. We'll demonstrate the power and benefits of defining your own MLIR dialect and progressively lower code from a high-level representation to a lower-level one. By the end of this session, you will have the keys to understand MLIR foundations, and what you could do with it in your projects.


Define And Lower Your New Dialect (web), Sylvain Noiry

In this hands-on session, you will learn how to create the “List” dialect, introduced in the first lesson. You will practice in an out-of-tree MLIR project and develop your dialect in the standard way, without using xDSL or IRDL. This will give you an opportunity to apply the concepts learned in the previous lessons. The session is organized into multiple exercises, each exploring a different aspect of dialect creation. Every exercise comes with a README, hints, and links to the portion of the official MLIR documentation. You can progress in the exercises either with the teachers or at your own pace. The goal is to provide you with both the knowledge and a project template to help you create your own dialect for your ideas.


Understanding Interfaces (pdf), Matthias Springer

Interfaces are a cornerstone of extensibility and modularity in MLIR. This session covers operation interfaces, type interfaces and attribute interfaces, and how to design and implement them. The main part of the session will focus on existing core interfaces in MLIR. Attendees will gain insight into how interfaces drive analyses and transformations, improve code structure, and facilitate scalable compiler development. Topics Covered:
  • What interfaces are, where they are used in MLIR and how to design / implement interfaces.
  • Real-world examples and demonstrations of core interfaces: from memory effects and control-flow modeling to bufferization and type abstraction. This session covers a wide range of core MLIR interfaces that model op semantics and drive analyses / transformations.
  • Discussion of challenges and open questions in the design of the covered interfaces.
This session is ideal for both newcomers and experienced MLIR users interested in building robust and maintainable compiler components. Interactive discussions will provide opportunities to explore best practices and unresolved design problems in the MLIR ecosystem.


Schedule Loop Nests with Transform (pdf), Alex Zinenko

MLIR features support for declaratively specifying and controlling compiler transformations via the transform dialect. It allows one to request compiler transformations using compiler IR itself, which can be embedded into the original IR that is being transformed (similarly to pragmas) or supplied separately (similarly to scheduling languages). This talk presents the concepts of the MLIR transform dialect and related infrastructure. It will be accompanied by a practical demonstration of three use scenarios centered on loop optimization. After following the task, the attendees will be able to apply the transform dialect in their work and extend it when necessary. Basic familiarity with MLIR is a prerequisite.


Discover Low-Level MLIR Abstractions (web), Kunwar Grover

One of the best ways to learn how to use MLIR is to build a language that you can interact with and play around with. MLIR is "batteries included", and has multiple dialects and transformations that exist in-tree, which are enough to build a simple vector math DSL. In this lesson, we will aim to learn how to move into and out of the MLIR ecosystem, moving in from a DSL frontend, getting out to LLVM IR towards assembly, and using this DSL from a general purpose programming language like Python.


Software Pipelining for Kernel Code Generation (pdf), Benoît Dupont de Dinechin

Kalray has a deep learning graph compiler in production, which targets a manycore processor built from VLIW cores. This Kalray graph compiler relies on a library of tensor processing kernels, most of which have been manually optimized and software pipelined. A key challenge is automating software pipelining for tensor processing kernels. We first review the principles and implementation of software pipeliners by modulo scheduling in C/C++ compilers. We then outline a new modulo scheduling approach, currently prototyped in GCC, which we plan to move to a MLIR-based kernel compiler.

Bio: Benoît Dupont de Dinechin (https://sites.google.com/site/benoitdinechin) is CTO at Kalray. He directly contributed to the design and implementation of production compilers with software pipelining at Cray Research, STMicroelectronics, and Kalray. He is also the co-architect of the Kalray VLIW cores and their tensor operators.