Suspension Analysis and Selective Continuation-Passing Style for Universal Probabilistic Programming Languages
Daniel Lundén, Lars Hummelgren, Jan Kudlicka, Oscar Eriksson, David Broman
TL;DR
The paper addresses the overhead of suspension in universal probabilistic programming languages by introducing a static suspension analysis and a selective CPS transformation. Grounded in a formal core calculus and $0$-CFA, the method identifies exactly which program parts may suspend under a given inference algorithm and applies CPS only there, yielding substantial runtime improvements over full CPS across multiple inference algorithms and real-world models. The authors implement these techniques in the Miking CorePPL compiler, provide an inference-problem extraction pass, and empirically validate gains on CRBD, ClaDS, LDA, and VBD, with improvements persisting across likelihood weighting, SMC variants, and MCMC methods. The work demonstrates practical impact for high-level PPLs, enabling performance-competitive suspensions without sacrificing generality or correctness, and offers a framework extensible to additional inference algorithms and models.
Abstract
Universal probabilistic programming languages (PPLs) make it relatively easy to encode and automatically solve statistical inference problems. To solve inference problems, PPL implementations often apply Monte Carlo inference algorithms that rely on execution suspension. State-of-the-art solutions enable execution suspension either through (i) continuation-passing style (CPS) transformations or (ii) efficient, but comparatively complex, low-level solutions that are often not available in high-level languages. CPS transformations introduce overhead due to unnecessary closure allocations -- a problem the PPL community has generally overlooked. To reduce overhead, we develop a new efficient selective CPS approach for PPLs. Specifically, we design a novel static suspension analysis technique that determines parts of programs that require suspension, given a particular inference algorithm. The analysis allows selectively CPS transforming the program only where necessary. We formally prove the correctness of the analysis and implement the analysis and transformation in the Miking CorePPL compiler. We evaluate the implementation for a large number of Monte Carlo inference algorithms on real-world models from phylogenetics, epidemiology, and topic modeling. The evaluation results demonstrate significant improvements across all models and inference algorithms.
