Skip to content

Latest commit

 

History

History
264 lines (216 loc) · 12.8 KB

File metadata and controls

264 lines (216 loc) · 12.8 KB

Quasi-Monte Carlo Software Packages

Note: This page is generated by scripts/make_qmc_software_page.py. Please do not edit docs/qmc-software.md directly; changes will be overwritten when the documentation is regenerated.

This page is intended to be a community-maintained resource for software related to quasi-Monte Carlo methods. Contributions are welcome.

Please submit a pull request targeting the develop branch with corrections or additions to the qmc-software.yml data file.

If you prefer not to use GitHub pull requests, you may instead email updates to Fred Hickernell.

Updating and previewing

The table below is generated from data/qmc-software.yml. We have used the following abbreviations:

  • LD: low discrepancy
  • LDS: low-discrepancy sequence
  • QMC: quasi-Monte Carlo

To preview changes locally:

make copydocs
mkdocs serve
Name Language Development Status Contact
Boost Random Number Library
Part of the Boost C++ Libraries, offering a wide range of random number generators, including some LDS
C++ Mature
BoTorch
Bayesian optimization library that leverages PyTorch's (Q)MC samplers
Python Active Meta / BoTorch developers
BRODA
Commercial software offering a range of QMC methods for financial modeling and risk analysis
C++ / Fortran Mature ✉ Sergei Kucherenko
Chaospy
Python library for uncertainty quantification with quasi-random sampling rules including Halton, Hammersley, Korobov, and Sobol sequences
Python Active Chaospy developers
Dakota
Software toolkit for optimization and uncertainty quantification, including support for lattices and digital nets
C++ Mature Pieterjan Robbe
Fast CBC constructions
Matlab/Octave routines for fast component-by-component construction of rank-1 lattice rules, lattice sequences, and polynomial lattice sequences
MATLAB / Octave Mature Dirk Nuyens
GAIL
Guaranteed Automatic Integration Library for one-, multi-, and infinite-dimensional integration with rigorous error guarantees
MATLAB Mature Sou-Cheng Choi
Fred Hickernell
Yuhan Ding
GNU Scientific Library
C library providing quasi-random sequence generators including Niederreiter, Sobol, Halton, and reverse Halton sequences
C Mature GSL Team
Halton
Random-start randomly permuted Halton sequences
C++ Mature
Intel oneMKL
High-performance math library whose RNG domain includes Sobol and Niederreiter quasi-random number generators
C++ / Data Parallel C++ Mature Intel / oneAPI developers
LatNet Builder
Library for constructing LD lattice rules and digital nets
C++ / Python Active
Collaboration welcome
Pierre L’Ecuyer
Lattice / Sobol'
Generating vectors for Sobol' sequences and lattice rules
plain text Mature Frances Kuo
Stephen Joe
LDData
Database of LD generators
plain text Active
Collaboration welcome
Aleksei Sorokin
Magic Point Shop
QMC point generators and generating vectors for digital sequences and lattice sequences
C++, MATLAB, Python, plain text Mature Dirk Nuyens
MATLAB Statistics & Machine Learning Toolbox
Produces quasi-random samples in the unit hypercube, including Sobol and Halton sequences
MATLAB Mature ✉ Liam Walsh
NAG Quasi-Random Number Generators
NAG's implementation of quasi-random number generators for use in Monte Carlo simulations
Fortran, C, C++ Mature
NVIDIA cuRAND
NVIDIA's library for generating random and quasi-random numbers on GPUs
C++ / CUDA Mature
OpenTURNS
Open-source uncertainty quantification platform with LDS including Faure, Halton, reverse Halton, Haselgrove, and Sobol sequences
Python / C++ Active Michaël Baudin
Anne Dutfoy
Bertrand Iooss
Anne-Laure Popelin
Owen's Scrambled Points
Nested uniform scrambling of Sobol' sequences and pointer to randomized Halton sequences
R Mature Art Owen
PyDOE3
Python design-of-experiments package with LD designs including Sukharev grids, Sobol, Halton, rank-1 lattices, Korobov sequences, and Cranley-Patterson randomization
Python Active PyDOE3 developers
PyTorch Sobol Engine
PyTorch's implementation of the Sobol sequence for generating LD samples in machine learning applications
Python Active
QMC Algorithms for Graphics Software
Reference with compact copy-and-paste algorithms for LDS
C++ / CUDA-style pseudocode Reference Alexander Keller; Carsten Wächter; Nikolaus Binder
QMC4PDE
Software for constructing randomly shifted lattice rules and interlaced polynomial lattice rules for elliptic PDEs with random diffusion coefficients
Python / MATLAB / C++ Active Frances Y. Kuo; Dirk Nuyens
QMCPy
Related: QMCToolsCL
Multi-purpose library featuring various LDS and data-driven error estimation
Python Active
Collaboration welcome
Sou-Cheng Choi
Fred Hickernell
Aleksei Sorokin
qrng
R package for generating LDS, including Sobol and Halton sequences, for statistical computing and data analysis
R Active ✉ Marius Hofert
Christiane Lemieux
QuasiMonteCarlo.jl
Julia package for generating LDS and performing QMC integration, designed for high-performance scientific computing
Julia Active Chris Rackauckas
randtoolbox
R package providing pseudo-random and quasi-random generators, including Torus, Sobol, Halton, and Van der Corput sequences
R Active Christophe Dutang
scipy.stats.qmc
Part of the SciPy library, providing LDS generators and sampling methods for scientific computing in Python
Python Active Pamphile Roy
Stochastic Simulation in Java (SSJ)
Java library for stochastic simulation, including LDS generators and sampling methods
Java Active Pierre L’Ecuyer
TensorFlow Probability
TensorFlow function for generating deterministic or randomized Halton LDS
Python Active TensorFlow Probability developers
UM-Bridge
Software framework for uncertainty quantification and modeling software packages
Multiple Active UM-Bridge team