vSMC
vSMC: Scalable Monte Carlo
vSMC

Introduction

The vSMC library provides a framework for implementing SMC algorithms. It has a core module which performs resampling, etc., operations common to all SMC algorithms and applications. In addition, it provides the bases for implementing parallelized samplers. The SMC algorithms are highly parallelizable, but there are many frameworks for doing this. This library tries to hide the different parallelization mechanism behind a unified interface, and thus increases code reuse.

Installation

This is a header only template C++ library. To install the library just move the contents of the include directory into a proper place, e.g., /usr/local/include in Unix-alike systems. Alternatively, one can use CMake (2.8.3 or later required),

1 cd /path_to_vSMC_source
2 mkdir build
3 cd build
4 cmake ..
5 make install

One may need su or sudo permissions to perform the last installation step.

Documentation

To make the documentations one need Doxygen 1.8.3 or later.

1 make docs

The documentation of the master and develop branches can be found online.

Examples

Examples are in the example subdirectory, to build them,

1 cd /path_to_vSMC_source
2 mkdir build
3 cd build
4 cmake ..
5 make example

Most examples also come with their own README files that give relevant references.

Parallelization backends

The library support various backends for multi-thread parallelization, unified under a uniform interface. The primary backends are OpenMP and Intel TBB. Other backends are available in the vSMC Extra repository, including MPI and OpenCL.

Third-party dependencies

This library has no dependences other than C++ standard libraries (C++11). Any C++11 language features are optional.

In particular, the library use the <functional> and <random> headers, which are parts of the C++11 standard libraries. Equivalences can be found in recent versions of Boost. The library does its best to detect a usable C++11 solution and falls back to Boost if it fails to do so. This behavior can be changed explicitly through configuration macros.

Compiler support

This library makes heavy use of some template metaprogramming techniques. It requires a C++11 standard conforming compiler.

This library has been regularly tested with recent Clang, GCC and Intel C++ Compiler in C++11 mode.

Microsoft Visual C++ 2015 or later are also supported. However, this compiler is tested less regularly.

Other compilers might work but are not tested.

License

The vSMC library is distributed with a 2-clause BSD license which can be found in the LICENSE file distributed with the source.