nelli: a lightweight frontend for MLIR
Maksim Levental, Alok Kamatar, Ryan Chard, Kyle Chard, Ian Foster

TL;DR
nelli is a lightweight, Python-based language designed to simplify the creation and lowering of MLIR code, making it easier to develop domain-specific compilers and target diverse hardware platforms.
Contribution
It introduces nelli, a novel Python-embedded language that provides a user-friendly interface for generating and manipulating MLIR code, bridging the gap between high-level frontend languages and MLIR's intermediate representation.
Findings
nelli enables easier definition of MLIR code in Python.
It facilitates lowering compute kernels to various hardware platforms.
Demonstrates improved usability for MLIR-based compiler development.
Abstract
Multi-Level Intermediate Representation (MLIR) is a novel compiler infrastructure that aims to provide modular and extensible components to facilitate building domain specific compilers. However, since MLIR models programs at an intermediate level of abstraction, and most extant frontends are at a very high level of abstraction, the semantics and mechanics of the fundamental transformations available in MLIR are difficult to investigate and employ in and of themselves. To address these challenges, we have developed \texttt{nelli}, a lightweight, Python-embedded, domain-specific, language for generating MLIR code. \texttt{nelli} leverages existing MLIR infrastructure to develop Pythonic syntax and semantics for various MLIR features. We describe \texttt{nelli}'s design goals, discuss key details of our implementation, and demonstrate how \texttt{nelli} enables easily defining and…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Advanced Data Storage Technologies · Distributed and Parallel Computing Systems
