2024-07-10 –, REPL (2, main stage)
Recent improvements to compilation caching in Julia have made it feel a lot more snappy :)
Except when you use non-native compilation (think GPUs or Automatic Differentiation) :(
In this talk I will dive into recent progress on non-native compilation caching, how Julia performs caching in the first place and my thoughts on compiler plugins
Compiler plugins have a rich history in Julia, starting with approaches like Cassette.jl (and it's cousin IRTools.jl) that used generated function and code reflection to implement non-standard semantics.
These were followed by a family of tools that extend the compiler interface (AbstractInterpreter
) and method overlay tables which currently power GPUCompiler.jl and others.
While these tools can perform within Julia session caching, they currently can not perform across session caching leading to large latency spikes. We will walk through Julia's caching infrastructure, explore the challenges involved and discuss a currently proposed solution.
A secondary challenge with the use of AbstractInterpreter
based tools is that there is no robust execution story, there is hope that the solving the non-native caching problem will also enable a solution for the execution of non-native code.
PhD student at the MIT JuliaLab