1) Caching Explicit Clang Modules with Content-Addressable Storage - Ben Langmuir
2) TableGen Formatter: Extending Clang-Format Capabilities - Venkat Nikhil Tatavarthy,Himanshu Shishir Shah
3) jax.infer: Inference with OpenMP on Commodity Hardware - Ludger Paehler
4) What’s New in the LLVM JIT - Lang Hames
Caching Explicit Clang Modules with Content-Addressable Storage - Ben Langmuir
This talk describes how we added sound compilation caching to explicitly built clang modules. This talk builds on the system for compilation caching using content-addressable storage presented at the 2022 LLVM developer meeting, discussing how we use the clang dependency scanner to discover modular inputs, how we model those inputs, and what challenges we needed to overcome along the way.
TableGen Formatter: Extending Clang-Format Capabilities - Venkat Nikhil Tatavarthy, Himanshu Shishir Shah
The TableGen infrastructure holds a pivotal position within LLVM and its sub-projects, particularly in LLVM backends, where a considerable amount of target-specific information, such as instruction definitions and CPU features, is expressed using TableGen. Furthermore, MLIR also heavily depends on TableGen as its backbone, playing a critical role in defining dialects, custom operators, and lowering rules. Both subsystems contain a significant volume of TableGen code, with over 300 and 44 KLOC utilized in LLVM and MLIR, respectively. Despite its extensive usage, the TableGen language currently lacks a proper code formatter, creating a need for one. To address this issue, we propose a solution that involves adding support for TableGen in Clang-Format. By building on top of the existing Clang-Format codebase, we efficiently achieve this with minimal modifications, benefiting from code reuse and ensuring seamless compatibility with its core functionalities. These modifications enable the Clang-Format to recognize a majority of the TableGen syntax including conditional statements, loops, and keywords such as def and multiclass. This effort contributes to enhancing code consistency and readability within TableGen, further empowering developers working on LLVM and its related projects.
jax.infer: Inference with OpenMP on Commodity Hardware - Ludger Paehler
With the ever greater prominence of large language models such as GitHub’s Copilot in developer’s workflows, the inference deployment of smaller, publicly available large language models such as Llama 2 on commodity hardware like personal laptops for personalized use becomes ever more important. This has spawned a number of dedicated inference implementations in lower-level languages as for example Llama.cpp, separate from training frameworks such as JAX and PyTorch. In this talk, we show what such an inference framework would look like if it were entirely compiler-centric by taking JAX, and adding a dedicated MLIR-based inference mode which takes the JAX model, and its weights and generates an OpenMP-parallelized inference executable with as few dependencies as possible. Our approach is validated by comparing against the state-of-the-art inference frameworks for commodity hardware on large language models of varying size, and large text-to-image diffusion models.
What’s New in the LLVM JIT - Lang Hames
Windows support, shared memory transport for JIT'd code, new architectures, ergonomic improvements and bug fixes. This talk will cover improvements to LLVM's JIT APIs since the 2021 LLVM Developer's Meeting, and discuss future directions for LLVM's JIT.