A parallel implementation of the BUGS modelling framework for faster Bayesian inference

MultiBUGS is a software package for performing Bayesian inference. It builds on the existing algorithms and tools in OpenBUGS and WinBUGS, and so is applicable to the broad range of statistical models that can be fitted using BUGS-language software, but automatically parallelises the MCMC algorithm to dramatically speed up computation.

MultiBUGS can run independent chains in parallel (e.g. for MCMC convergence analysis), and also parallelise computation required within each independent chain:

  1. evaluation of the product-form likelihoods (e.g. for ‘fixed effect’ parameters)
  2. sampling of conditionally-independent parameters (e.g. ‘random effects’ parameters)

For example, in an hierarchical regression model including 425,112 observations and 20,426 random effects, we found that OpenBUGS took 32 hours, whereas MultiBUGS took only 28 minutes using 48 cores (4x 16-core AMD processors from 2012). See Goudie et al. (in press) for details.


MultiBUGS currently works only on Windows. (A Linux port is under preparation.)

  1. Download and install Microsoft MPI (MS-MPI). Version 8.1 or newer is required. This framework allows running parallel applications on the Windows platform.
  2. Download MultiBUGS 1.0, and unzip this to, for example, C:\Program Files (x86)\MultiBUGS.

    Note that, within the installation directory, MultiBUGS creates a new BugsWorker.exe every time a model is run (e.g. C:\Program Files (x86)\MultiBUGS\BugsWorker.exe). This means you that you must have write permission for the installation directory, otherwise you will get the error “unable to link BugsWorker executable” when you try to distribute a model. Installing MultiBUGS in a different directory (e.g. C:\Users\yourusername\MultiBUGS) may resolve this error.

  3. Open C:\Program Files (x86)\MultiBUGS\MultiBUGS.exe
Getting started

The steps for running an analysis in MultiBUGS are identical to OpenBUGS, except that we must specify how many cores to distribute computation across and initialise the parallelisation. This is specified using the 'distribute' button in the Specification Tool.

See the existing OpenBUGS documentation for general information about BUGS.

An R interface R2MultiBUGS is under development. This is a port of R2OpenBUGS.

Further information

Details of the algorithms used by MultiBUGS can be found in:

Goudie, R. J. B., Turner, R. M., De Angelis, D., Thomas, A. (in press) MultiBUGS: A parallel implementation of the BUGS modelling framework for faster Bayesian inference. Journal of Statistical Software. arXiv:1704.03216 (slides pdf)

Known Issues

We maintain a list of known issues on GitHub Wiki. Please report issues via GitHub Issues.

Source code

The source code is available on GitHub.