Code Monkey home page Code Monkey logo

MultiBUGS

MultiBUGS implements a simple, automatic algorithm for parallelising Markov chain Monte Carlo (MCMC) algorithms for posterior inference of Bayesian hierarchical models. It builds on the existing algorithms and tools in OpenBUGS, 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. This makes modern multi-core computing accessible to applied statisticians, without requiring any experience of parallel programming.

See the MultiBUGS website for further details.

Contents

Citation

If you use MultiBUGS in your published work, please cite

Goudie, R. J. B., Turner, R. M., De Angelis, D., Thomas, A. (2020) MultiBUGS: A parallel implementation of the BUGS modelling framework for faster Bayesian inference. Journal of Statistical Software, 95(7). doi:10.18637/jss.v095.i07

Installation

See the main MultiBUGS website for installation instructions of the current released version. The current released version of MultiBUGS works on Windows (with Microsoft MPI (MSI-MPI), version >=8.1) or Linux.

Pre-built unstable development versions

Build status

Windows pre-built unstable binaries

We recommend using the stable version from the main MultiBUGS website, but if you want to try out the current unstable version:

  1. Download and install Microsoft MPI (MS-MPI) (v8.1 or newer)

  2. Download the latest master branch build of MultiBUGS. Unzip this to, e.g., C:\Program Files (x86)\MultiBUGS.

Linux pre-built unstable binaries

Pre-built unstable Linux binaries available from Azure Pipeline.

Compiling from source

Compiling from source on Windows

We recommend using the stable version from the main MultiBUGS website, but if you want to compile the current unstable version from source:

  1. Download and install Microsoft MPI (MS-MPI). Version 8.1 or newer is required, since MultiBUGS uses MPI_Comm_spawn. This framework allows running parallel applications on the Windows platform.

  2. Download and install BlackBox 1.7.2 from the BlackBox Framework Center. This is the framework that MultiBUGS is written using.

  3. Download the zip archive of MultiBUGS. Unzip this to, for example, C:\

  4. Make a new shortcut to the BlackBox.exe file in the newly-installed BlackBox directory (right-click on BlackBox.exe, choose "Create shortcut"). Then, right click the newly-created shortcut, choose "Properties", and choose the "Shortcut" tab. Then add the following text to the Target box, with the paths C:\Program Files (x86)\BlackBox Component Builder 1.7\BlackBox.exe (path to BlackBox.exe) and C:\MultiBUGS-master (path to the MultiBUGS directory) changed to match wherever you installed BlackBox and MultiBUGS:

    mpiexec -n 1 "C:\Program Files (x86)\BlackBox Component Builder 1.7\BlackBox.exe" /USE "C:\MultiBUGS-master"
    

    Then change the Start in to match the path to the MultiBUGS directory, e.g.

    "C:\MultiBUGS-master"
    

    You may want to move the shortcut itself to the Desktop to make it easy to access.

  5. Double click the shortcut to open MultiBUGS/BlackBox.

  6. Within MultiBUGS/BlackBox open Make.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the ! beside DevCompiler.CompileThis. This will compile MultiBUGS. The compiler will ask you to confirm the creation of many directories: click OK to confirm all of these in turn. Compiling will take a couple of minutes. Once compiling is finished the status bar should say "ok".

  7. Close BlackBox/MultiBUGS and then reopen it to complete installation. Note that the first time you compile a model, BlackBox/MultiBUGS will confirm creation of a couple of extra directories. The Windows Firewall may also require you to give BlackBox/MultiBUGS permission: this is needed to allow communication between cores.

  8. The shortcut link version will now work. If you would also like to create a self-contained compiled version of MultiBUGS (that doesn't need the BlackBox install) and/or use the MultiBUGS.exe executable, follow the following steps:

    (a) Within MultiBUGS/BlackBox open Linking.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the first two ! buttons in the "How to link MultiBUGS" section in turn. This creates OpenBUGS.exe, which MultiBUGS.exe needs. (More precisely, MultiBUGS.exe is just a wrapper around OpenBUGS.exe that handles setting up MPI.)

    (b) Next, open up BugsPackage.odc, which is within the Rsrc folder within the Bugs folder in the MultiBUGS directory. This opens up the tool that is used to create the self-contained version of MultiBUGS. The path specifies where MultiBUGS will be installed. The other options specify which files are copied to the self-contained installation. Before clicking ok to create the self-contained version it is useful to open the Log window (Info menu > Open log) to make it easy to monitor progress.

    (c) Once this process is complete, MultiBUGS.exe within the self-contained version should work, and the BlackBox installation is not required. Note that the first time you compile a model, MultiBUGS will confirm creation of a couple of extra directories.

Compiling from source on Linux

On Debian/Ubuntu-based systems

  1. Install BlackBox Cross-Platform.

  2. Install 32-bit MPICH

    sudo apt install mpich:i386
    
  3. Download the current master branch and open BlackBox (bbcb).

    wget https://github.com/MultiBUGS/MultiBUGS/archive/master.tar.gz
    tar -xzf master.tar.gz
    cd MultiBUGS-master
    bbcb
    
  4. Within MultiBUGS/BlackBox open MakeLinux.odc, which is found in the Developer directory in the MultiBUGS directory. Click on the ! beside DevCompiler.CompileThis. This will compile MultiBUGS. Once compiling is finished the status bar should say "ok".

  5. Start up MultiBUGS under MPI

    mpiexec -n 1 bbcb
    

License

MultiBUGS is licensed under LGPL-3.0 (GNU Lesser General Public License v3.0)

It includes code from:

  1. BlackBox Framework Center 2-Clause BSD License

    Copyright (c) 2013 - 2019 BlackBox Framework Center
    Copyright (c) 1994 - 2013 Oberon microsystems, Inc., Switzerland.
                              All rights reserved.
    
  2. BlackBox Cross-Platform 2-Clause BSD License

    Copyright (c) 2017 - 2020 Alexander V. Shiryaev, Ivan A. Denisov,
                              Igor A. Dehtyarenko, Anton A. Dmitriev
    Copyright (c) 2013 - 2019 BlackBox Framework Center
    Copyright (c) 1994 - 2013 Oberon microsystems, Inc., Switzerland.
                              All rights reserved.
    
  3. TAUCS GNU LGPL (Library or Lesser GNU Public Library)

    TAUCS Version 2.0, November 29, 2001.
    Copyright (c) 2001, 2002, 2003
    by Sivan Toledo, Tel-Aviv Univesity, [email protected].
    All Rights Reserved.
    

multibugs's Projects

multibugs icon multibugs

Multi-core BUGS for fast Bayesian inference of large hierarchical models

multibugs-txt icon multibugs-txt

Auto-generated mirror of https://github.com/MultiBUGS/MultiBUGS/ with .odc files converted to .txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.