dc.contributor.author | Lundén, Daniel | |
dc.contributor.author | Öhman, Joey | |
dc.contributor.author | Kudlicka, Jan | |
dc.contributor.author | Senderov, Viktor | |
dc.contributor.author | Ronquist, Fredrik | |
dc.contributor.author | Broman, David | |
dc.date.accessioned | 2023-01-04T14:10:12Z | |
dc.date.available | 2023-01-04T14:10:12Z | |
dc.date.created | 2022-12-19T15:56:31Z | |
dc.date.issued | 2022 | |
dc.identifier.isbn | 978-3-030-99335-1 | |
dc.identifier.uri | https://hdl.handle.net/11250/3041011 | |
dc.description.abstract | Probabilistic programming languages (PPLs) allow users to encode arbitrary inference problems, and PPL implementations provide general-purpose automatic inference for these problems. However, constructing inference implementations that are efficient enough is challenging for many real-world problems. Often, this is due to PPLs not fully exploiting available parallelization and optimization opportunities. For example, handling probabilistic checkpoints in PPLs through continuation-passing style transformations or non-preemptive multitasking—as is done in many popular PPLs—often disallows compilation to low-level languages required for high-performance platforms such as GPUs. To solve the checkpoint problem, we introduce the concept of PPL control-flow graphs (PCFGs)—a simple and efficient approach to checkpoints in low-level languages. We use this approach to implement RootPPL: a low-level PPL built on CUDA and C++ with OpenMP, providing highly efficient and massively parallel SMC inference. We also introduce a general method of compiling universal high-level PPLs to PCFGs and illustrate its application when compiling Miking CorePPL—a high-level universal PPL—to RootPPL. The approach is the first to compile a universal PPL to GPUs with SMC inference. We evaluate RootPPL and the CorePPL compiler through a set of real-world experiments in the domains of phylogenetics and epidemiology, demonstrating up to 6× speedups over state-of-the-art PPLs implementing SMC inference. | en_US |
dc.language.iso | eng | en_US |
dc.publisher | Springer | en_US |
dc.relation.ispartof | Programming Languages and Systems (31st European Symposium on Programming, ESOP 2022) | |
dc.rights | Attribution-NonCommercial-NoDerivatives 4.0 Internasjonal | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/4.0/deed.no | * |
dc.subject | Probabilistic Programming Languages | en_US |
dc.subject | Compilers | en_US |
dc.subject | Sequential Monte Carlo | en_US |
dc.subject | GPU Compilation | en_US |
dc.title | Compiling Universal Probabilistic Programming Languages with Efficient Parallel Sequential Monte Carlo Inference | en_US |
dc.title.alternative | Compiling Universal Probabilistic Programming Languages with Efficient Parallel Sequential Monte Carlo Inference | en_US |
dc.type | Chapter | en_US |
dc.description.version | publishedVersion | en_US |
dc.source.pagenumber | 29-56 | en_US |
dc.identifier.doi | 10.1007/978-3-030-99336-8_2 | |
dc.identifier.cristin | 2095354 | |
cristin.ispublished | true | |
cristin.fulltext | original | |
cristin.qualitycode | 1 | |