Saved in:
Bibliographic Details
Main Authors: Lim, Sangho, Lim, Hyoungjin, Lee, Wonyeol, Rival, Xavier, Yang, Hongseok
Format: Preprint
Published: 2025
Subjects:
Online Access:https://arxiv.org/abs/2511.11070
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866914158374551552
author Lim, Sangho
Lim, Hyoungjin
Lee, Wonyeol
Rival, Xavier
Yang, Hongseok
author_facet Lim, Sangho
Lim, Hyoungjin
Lee, Wonyeol
Rival, Xavier
Yang, Hongseok
contents Probabilistic programming languages (PPLs) are a popular tool for high-level modelling across many fields. They provide a range of algorithms for probabilistic inference, which analyse models by learning their parameters from a dataset or estimating their posterior distributions. However, probabilistic inference is known to be very costly. One of the bottlenecks of probabilistic inference stems from the iteration over entries of a large dataset or a long series of random samples. Vectorisation can mitigate this cost, but manual vectorisation is error-prone, and existing automatic techniques are often ad-hoc and limited, unable to handle general repetition structures, such as nested loops and loops with data-dependent control flow, without significant user intervention. To address this bottleneck, we propose a sound and effective method for automatically vectorising loops in probabilistic programs. Our method achieves high throughput using speculative parallel execution of loop iterations, while preserving the semantics of the original loop through a fixed-point check. We formalise our method as a translation from an imperative PPL into a lower-level target language with primitives geared towards vectorisation. We implemented our method for the Pyro PPL and evaluated it on a range of probabilistic models. Our experiments show significant performance gains against an existing vectorisation baseline, achieving $1.1$--$6\times$ speedups and reducing GPU memory usage in many cases. Unlike the baseline, which is limited to a subset of models, our method effectively handled all the tested models.
format Preprint
id arxiv_https___arxiv_org_abs_2511_11070
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Optimising Density Computations in Probabilistic Programs via Automatic Loop Vectorisation
Lim, Sangho
Lim, Hyoungjin
Lee, Wonyeol
Rival, Xavier
Yang, Hongseok
Programming Languages
Probabilistic programming languages (PPLs) are a popular tool for high-level modelling across many fields. They provide a range of algorithms for probabilistic inference, which analyse models by learning their parameters from a dataset or estimating their posterior distributions. However, probabilistic inference is known to be very costly. One of the bottlenecks of probabilistic inference stems from the iteration over entries of a large dataset or a long series of random samples. Vectorisation can mitigate this cost, but manual vectorisation is error-prone, and existing automatic techniques are often ad-hoc and limited, unable to handle general repetition structures, such as nested loops and loops with data-dependent control flow, without significant user intervention. To address this bottleneck, we propose a sound and effective method for automatically vectorising loops in probabilistic programs. Our method achieves high throughput using speculative parallel execution of loop iterations, while preserving the semantics of the original loop through a fixed-point check. We formalise our method as a translation from an imperative PPL into a lower-level target language with primitives geared towards vectorisation. We implemented our method for the Pyro PPL and evaluated it on a range of probabilistic models. Our experiments show significant performance gains against an existing vectorisation baseline, achieving $1.1$--$6\times$ speedups and reducing GPU memory usage in many cases. Unlike the baseline, which is limited to a subset of models, our method effectively handled all the tested models.
title Optimising Density Computations in Probabilistic Programs via Automatic Loop Vectorisation
topic Programming Languages
url https://arxiv.org/abs/2511.11070