C++ implementation of multigrid Monte Carlo (MGMC) algorithm. In addition to MGMC, the code also implements sampling based on different Cholesky factorisations as an alternative algorithm.
The code requires the Eigen library for linear algebra as well as libconfig for parsing configuration files. To install libconfig, clone the libconfig repository and build/install it with CMake.
If possible, Eigen will use BLAS/LAPACK support for dense linear algebra, but it will fall back to the non-BLAS/LAPACK version if these libraries are not installed.
CholMod is an optional dependency, if it is not found the code falls back to using the Simplicial Cholesky factorisation in Eigen, which is not necessarily slower. Cholmod is available as part of SuiteSparse. To prevent the use of CholMod even if it has been installed, set the USE_CHOLMOD
flag to Off
during the CMake configure stage.
To compile, create a new directory called build
. Change to this directory and run
cmake ..
to configure, followed by
make
to build the code.
To run the unit tests, use
./bin/test
This can take quite long (several minutes to an hour), to build a simplified version of the tests (which essentially generated less samples when testing statistical properties) set the flag USE_THOROUGH_TESTS
to Off
when configuring CMake.
The executables are called driver_mg
(for the deterministic multigrid solve) and driver_mgmc
(for Monte Carlo sampling with different samplers) in the bin
subdirectory. To run the code, use
./bin/DRIVER CONFIG_FILE
where DRIVER
is driver_mg
or driver_mgmc
and CONFIG_FILE
is the name of the file that contains the runtime configuration; an example can be found in parameters_template.cfg. The location, mean and variance of the observations are defined in a measurement file, which is referenced in the measurements
dictionary of the configurations file. An example of such a file can be found in measurements_template.cfg. Measurements files can be generated with the Python script generate_measuremenents.py.
- Goodman, J. and Sokal, A.D., 1989. Multigrid Monte Carlo Method. Conceptual Foundations. Physical Review D, 40(6), p.2035.
- Fox, C. and Parker, A., 2017. Accelerated Gibbs sampling of normal distributions using matrix splittings and polynomials.
- Harbrecht, H., Peters, M. and Schneider, R., 2012. On the low-rank approximation by the pivoted Cholesky decomposition. Applied numerical mathematics, 62(4), pp.428-440.