Probabilistic Programming with CuPPL
Alexander Collins, Vinod Grover

TL;DR
This paper introduces CuPPL, a probabilistic programming language and toolchain that generates highly efficient code for CPUs and GPUs, enabling faster inference and broader expressivity in probabilistic models.
Contribution
It presents a novel functional-style probabilistic programming language with a LLVM-based toolchain that supports hardware acceleration on CPUs and GPUs, improving performance.
Findings
Significant speed-ups on CPU workloads compared to state-of-the-art approaches.
Efficient code generation for CUDA GPUs.
Supports highly expressive probabilistic models.
Abstract
Probabilistic Programming Languages (PPLs) are a powerful tool in machine learning, allowing highly expressive generative models to be expressed succinctly. They couple complex inference algorithms, implemented by the language, with an expressive modelling language that allows a user to implement any computable function as the generative model. Such languages are usually implemented on top of existing high level programming languages and do not make use of hardware accelerators. PPLs that do make use of accelerators exist, but restrict the expressivity of the language in order to do so. In this paper, we present a language and toolchain that generates highly efficient code for both CPUs and GPUs. The language is functional in style, and the tool chain is built on top of LLVM. Our implementation uses de-limited continuations on CPU to perform inference, and custom CUDA codes on GPU. We…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Numerical Methods and Algorithms · Algorithms and Data Compression
