ParaMonte: A High-Performance Serial/Parallel Monte Carlo and MCMC Library for Python, MATLAB, R, Fortran, C++, and C
Predictive science is a multilevel process requiring observational data and a model/hypothesis which will have to be calibrated and validated to eventually predict the quantity of interest. For decades, Monte Carlo simulations have been the primary method for model calibration. Here we present and discuss a collection of popular and powerful Monte Carlo techniques that can aid inference and uncertainty quantification in Machine learning and Bayesian problems that have both serial and parallel implementations within our package, ParaMonte. The primary focus in the development of ParaMonte has been on user-friendliness, accessibility from different programming languages and platforms, high-performance, parallelism and scalability, as well as reproducibility and comprehensive post-processing and visualization of the simulation results. Users can simply pass a user-made objective function to the samplers and upon completion, a series of files will be generated for comprehensive-reporting and post-processing of each simulation and its results. Automatic restart functionality is the core feature of all ParaMonte samplers and simulations. Other than the optional MPI runtime library for parallel simulations, the ParaMonte kernel is completely self-contained, having zero dependencies upon external third-party libraries or packages. The MIT-licensed ParaMonte library is currently accessible from Python, MATLAB, R, Fortran, C++, and C programming languages and is permanently located at https://github.com/cdslaborg/paramonte.