Philippe Virouleau (Storm)
Hi everyone!
It is spoiler season! Join us next week to get an early peek at Philippe Virouleau’s presentation for FOSDEM 2023 (https://fosdem.org/2023/) and learn something new about LLVM (and PARCOACH).
Speaker
Philippe Virouleau (Storm)
When
Tuesday, January 31, 2023 at 9:30 am.
Where
room George Boole 2
Title
Case study of creating and maintaining an analysis and instrumentation tool based on LLVM: PARCOACH
Abstract
PARCOACH is a static and dynamic analysis tool for High Performance Computing applications (using MPI and OpenMP for instance), based on LLVM. Its main purpose is to check that the APIs usage are correct (for instance that all processes or threads call a barrier to avoid a deadlock). It's not always possible to detect all errors statically, therefore the static analysis can be complemented by a dynamic instrumentation of the code to perform some correctness checks during the code execution.
This (out-of-tree) tool has been initially written based on LLVM 3.7, and is now based on LLVM 15. As a research project, it has seen a lot of contributions: from PhD students, from interns, and from researchers; with actually a low number of LLVM-specific engineers working on it until recently. The objective of the talk will be to focus on how the project has been using LLVM over the years (and how it's been maintained):
- how the lack of maintenance had lead to a relatively high technical dept.
- how LLVM tools and structure had been used: from a manual compilation of the code to "properly" using LLVM's CMake integration, from analysis code tangled in the transformation code to properly using the "new" analysis and passes manager.
- how the CI/CD evolved to improve the user experience (eg: docker-based jobs, automated images and packages generation, docker-compose entry point).
- the weaknesses remaining in the project (as far as LLVM is concerned), where they come from, and the plan to fix them.
- and obviously take a look at some mistakes that have been made (trying to maintain compatibility with several LLVM versions at once just to name one).
Hopefully this talk will provide some interesting take-aways for people looking into developing or maintaining out-of-tree LLVM-based software.