2020-07-30 –, Red Track
A case of IR-based metaprogramming, going beyond just nonstandard function execution.
This talk introduces the design and development goals of IRTracker, a library for dynamic and recursive tracking of Julia’s intermediate representation (IR) during the execution of any Julia function. I will describe the relative merits of Cassette and IRTools for implementing such a project, and discuss some insights about the current metaprogramming infrastructure. Then, I’ll provide an overview of the resulting package, which is designed with the application to probabilistic programming in mind (specifically, its use within Turing for automatic computation of Gibbs conditionals).
The code transformation mechanism is currently specialized to insert the necessary tracking statements, but it can be easily abstracted out. This could serve as the basis for the implementation of IR transformations for other abstract interpretation mechanisms, especially such which need access not only to function calls, but also to branches performed during execution.
- Student at Graz University of Technology
- Member of TuringLang