1) Code-Completion in Clang-Repl - Fred Fu
2) Quick explanation of the LLVM’s OpenMP Task runtime and the new record and replay feature - Rémy Pierre Gwenaël Neveu
3) Driving MLIR compilation from Python - Martin Lücke
4) TDG discovery and compile-time optimizations of OpenMP Tasks - Rafael Andres Herrera Guaitero
Code-Completion in Clang-Repl - Fred Fu
Built upon Clang and LLVM incremental compilation pipelines, Clang-Repl is a C++ interpreter featuring a REPL that enables C++ users to develop programs in an exploratory fashion. Autocompletion in Clang-Repl is a significant leap forward in this direction. The feature empowers Clang-Repl to accelerate their input and prevent typos. Inspired by the counterpart feature in Cling, a downstream project of Clang-Repl, our auto-completion feature leverages existing components of Clang/LLVM, and provides context-aware semantic completion suggestions. In this talk, we will present how autocompletion works at REPL and how it interacts with other Clang/LLVM infrastructure.
Quick explanation of the LLVM’s OpenMP Task runtime and the new record and replay feature - Rémy Pierre Gwenaël Neveu
This talk offers a quick overview of the current implementation of OpenMP tasking. The objective of this talk is to explain the current state of the implementation and provide guidelines for other developers on how to get started and improve LLVM’s OpenMP task support. We first describe the overall compilation pipeline of programs that include OpenMP tasks. We emphasize source code location and the role of each part of the compilation process. Following, we provide a deeper overview of the clang front-end. Next, we provide an overview of the runtime system interface and implementation. Finally, we provide hints on how to test new functionalities and debug the runtime.
Driving MLIR compilation from Python - Martin Lücke
The MLIR infrastructure supports productive IR construction via Python bindings, but offers only limited string parsing-based pass pipeline constructor to transform the IR from Python. We propose a Python-native interface to compose and fine-tune transformations at finer granularity by leveraging MLIR’s transform dialect. We also extend this dialect to allow for constructing “passes” that apply a composition of rewrite patterns on-the-fly. This talk highlights the challenges MLIR’s radically extensible design presents for the conventional pass-based design of compiler pipelines and offers a glimpse of the possible evolution.
TDG discovery and compile-time optimizations of OpenMP Tasks - Rafael Andres Herrera Guaitero
In this session, the talk will focus on enhancing LLVM's ability to optimize OpenMP task code by proposing an approach for encoding the partial Task Dependence Graph (TDG) during compilation using LLVM-IR, attributes, and metadata. The goal is to enable the compiler to perform traditional code analysis, aiding in the TDG's construction, and optimizations that improve program execution. The significance of efficient and optimal code in the context of OpenMP tasking will be highlighted, along with the challenges and potential opportunities. To address these challenges effectively, a simple yet novel abstraction for OpenMP tasking analysis and optimizations will be presented. The discussion will cover the outcomes and current status of the implementation, demonstrating the feasibility and benefits of adopting this approach, aiming to achieve greater efficiency and performance in tasking programming models.