ParaMonte

ParaMonte: A high-performance serial/parallel Monte Carlo simulation library for C, C++, Fortran - Published in JOSS (2021)

https://github.com/cdslaborg/paramonte

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    4 of 6 committers (66.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

adaptive-learning bayesian-inference bayesian-statistics c cpp fortran machine-learning machine-learning-algorithms machine-learning-library markov-chain matlab mcmc monte-carlo monte-carlo-simulations mpi numerical-integration openmp python sampling

Scientific Fields

Physics Physical Sciences - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

ParaMonte: Parallel Monte Carlo and Machine Learning Library for Python, MATLAB, Fortran, C++, C.

Basic Info
Statistics
  • Stars: 293
  • Watchers: 11
  • Forks: 35
  • Open Issues: 18
  • Releases: 12
Topics
adaptive-learning bayesian-inference bayesian-statistics c cpp fortran machine-learning machine-learning-algorithms machine-learning-library markov-chain matlab mcmc monte-carlo monte-carlo-simulations mpi numerical-integration openmp python sampling
Created almost 6 years ago · Last pushed 12 months ago
Metadata Files
Readme Changelog Contributing License

README.md

ParaMonte: Parallel Monte Carlo and Machine Learning Library
GitHub Release Date GitHub release (latest by date) PyPI - release version PyPI - Status Fortran code coverage - serial GitHub issues supported languages stats - Open Hub GitHub All Releases PyPI - Downloads PyPI stats View ParaMonte on File Exchange GitHub repo size GitHub language count GitHub commit activity GitHub last commit citations and references citations and references ascl:2008.016 DOI badge

Twitter

Overview | Installation | Dependencies | Parallelism | Examples | Acknowledgments | License | Authors

ParaMonte: Parallel Monte Carlo and Machine Learning

ParaMonte is a serial/parallel library of Monte Carlo routines for sampling mathematical density functions of arbitrary dimensions and Machine Learning (ML) algorithms for scientific inference, with the design goal of unifying automation (of simulations and tasks), user-friendliness (of algorithms), accessibility (from any platform or programming environment), high-performance (at runtime), and scalability (across many parallel processors).

For more information on the installation, usage, and examples, visit https://www.cdslab.org/paramonte

ParaMonte Design Goals

ParaMonte has been developed while bearing the following design goals in mind:

  • Full automation of Monte Carlo and Machine Learning simulations as much as possible to ensure user-friendliness of the library and minimal time investment requirements for building, running, and post-processing simulation models.

  • Interoperability of the core library with as many programming languages as currently possible, including C, C++, Fortran, MATLAB, and Python, with ongoing efforts to support other popular programming languages.

  • High-Performance meticulously-low-level library implementation to ensure the fastest-possible inferences.

  • Parallelizability of all simulations via shared-memory OpenMP threads and two-sided and one-sided MPI/Coarray distributed communications while requiring zero-parallel-coding efforts by the user.

  • Zero-dependence on external libraries to ensure hassle-free ParaMonte library builds and ParaMonte simulation runs.

  • Fully-deterministic reproducibility and automatically-enabled restart functionality for all simulations with arbitrary digits of precision as requested by the user.

  • Comprehensive reporting and post-processing of simulations and ML tasks, as well as their automatic storage in external files to ensure the simulation results will be understandable and reproducible at any time in the foreseeable future.

Quick Start

  • Follow the quick start instructions in this QUICKSTART.md file.
  • For programming languages other than C, C++, Fortran, see the quick start section of the README.md file in the corresponding language's source subfolder in the src folder in the root directory of the ParaMonte repository.

Installation

The prebuilt, ready-to-use libraries are available on the release page of the ParaMonte library on GitHub.
Each prebuilt ParaMonte library automatically ships with a full-fledged set of example codes and build scripts.

Alternatively, you can build the library from the source in the project's GitHub repository.
The ParaMonte library installation/build process is fully automated for all supported programming languages.
Currently, the following compiler suites are supported for builds from source,

| Compiler Suite | Windows (amd64) | Linux (amd64) | macOS (amd64) | macOS (arm64) |
|----------------------------------:|:---------------:|:-------------:|:-------------:|:-------------:|
| GNU Compiler Collection >= 10.3 | ✅ | ✅ | ✅ | ✅ |
| Intel OneAPI >= 2021.8.0 | ✅ | ✅ | ✅ | ❌ |

with the following essential build systems,

| Dependency | Windows (amd64) | Linux (amd64) | macOS (amd64) | macOS (arm64) |
|----------------------------------:|:---------------:|:-------------:|:-------------:|:-------------:|
| CMake >= 3.21 | ✅ | ✅ | ✅ | ✅ |

Dependencies

Aside from an optional MPI runtime library for MPI-parallel simulations, the ParaMonte library core has zero dependency on external third-party libraries or packages.

Parallelism

The ParaMonte library relies on three independent parallelism paradigms for parallel applications:

  1. The Coarray parallelism (only available for select routines in the Fortran programming language).
  2. The Message Passing Interface (MPI) standard for inter-processor distributed parallelism.
    • On Windows and Linux operating systems, we highly recommend downloading and installing the Intel MPI runtime libraries, which is available to the public free of charge.
      The ParaMonte auxil prerelease exclusively contains the optional Intel MPI runtime libraries for users' convenience.
      The Intel MPI requires the ParaMonte library to be (or have been prebuilt) using the Intel compilers.
    • On macOS (where Intel MPI is unavailable) and Linux operating systems, users can install either Open-MPI or MPICH MPI runtime libraries depending on the prebuilt version of the ParaMonte library that you have downloaded or the configuration with which you intend to build the library.

Optional Dependency Compatibility

| Dependency | Windows (amd64) | Linux (amd64) | macOS (amd64) | macOS (arm64) |
|----------------------------------:|:---------------:|:-------------:|:-------------:|:-------------:|
| Intel MPI (IMPI) >= 2021.8 | ✅ | ✅ | ✅ | ❌ |
| MPICH MPI (MMPI) >= 3 | ❌ | ✅ | ✅ | ✅ |
| OpenMPI (OMPI) >= 4 | ❌ | ✅ | ✅ | ✅ |

Read the install.md installation instruction notes to learn more about the library's optional parallel build configurations.

For more information, visit https://www.cdslab.org/paramonte/.

Example Usage Instructions

Citing ParaMonte

The ParaMonte library is an honor-ware and its currency is acknowledgment and citations.

If you use ParaMonte or any ideas from this software, please acknowledge it by citing the ParaMonte library's main publications as listed in ACKNOWLEDGMENT.md.

Visit the ParaMonte library homepage to access the PDF version of these files free of charge.

License

The majority of the ParaMonte library routines are distributed under the permissive MIT License plus acknowledgments that are detailed in LICENSE.md.

However, there are occasionally modernized and extended routines from external projects, particularly within the ParaMonte Fortran library. These routines may have a license that does not fully overlap with the default ParaMonte library license LICENSE.md. In such cases, the documentation and source code of the specific routine explicitly list the original license information.

This is free software, so help us keep it freely available to the public by acknowledging the usage and contributing to it. If you have questions or concerns about the license, please get in touch with the project's lead (shahmoradi@utexas.edu).

Authors and Contributors

Contributing to ParaMonte

Please read the generic contribution guidelines listed in CONTRIBUTING.md.

For more information, visit cdslab.org/pm or contact Amir Shahmoradi: shahmoradi@utexas.edu

Owner

  • Name: Computational Data Science Lab
  • Login: cdslaborg
  • Kind: organization
  • Location: Texas, USA

Computational Data Science research and education, made as simple as possible, but not simpler.

JOSS Publication

ParaMonte: A high-performance serial/parallel Monte Carlo simulation library for C, C++, Fortran
Published
May 13, 2021
Volume 6, Issue 61, Page 2741
Authors
Amir Shahmoradi ORCID
Department of Physics, The University of Texas, Arlington, TX, Data Science Program, The University of Texas, Arlington, TX
Fatemeh Bagheri
Department of Physics, The University of Texas, Arlington, TX
Editor
Viviane Pons ORCID
Tags
C C++ Monte Carlo Markov Chain Monte Carlo Uncertainty Quantification Metropolis-Hastings adaptive sampling MCMC DRAM

GitHub Events

Total
  • Create event: 2
  • Issues event: 3
  • Release event: 1
  • Watch event: 27
  • Issue comment event: 4
  • Push event: 79
  • Fork event: 1
Last Year
  • Create event: 2
  • Issues event: 3
  • Release event: 1
  • Watch event: 27
  • Issue comment event: 4
  • Push event: 79
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 2,022
  • Total Committers: 6
  • Avg Commits per committer: 337.0
  • Development Distribution Score (DDS): 0.045
Past Year
  • Commits: 434
  • Committers: 3
  • Avg Commits per committer: 144.667
  • Development Distribution Score (DDS): 0.094
Top Committers
Name Email Commits
Amir Shahmoradi a****i@g****m 1,931
Fatemeh Bagheri b****e@g****m 42
Shashank s****e@m****u 29
Joshua Osborne j****e@m****u 16
Daniel S. Katz d****z@i****g 3
Joshua Osborne j****8@l****u 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 32
  • Total pull requests: 13
  • Average time to close issues: 23 days
  • Average time to close pull requests: about 2 hours
  • Total issue authors: 12
  • Total pull request authors: 4
  • Average comments per issue: 2.56
  • Average comments per pull request: 0.15
  • Merged pull requests: 12
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 1.5
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • barracuda156 (7)
  • milancurcic (6)
  • shahmoradi (5)
  • arwelHughes (4)
  • Beliavsky (2)
  • fagheri (2)
  • Higggg (1)
  • ShashankKumbhare (1)
  • JoshuaOsborneDATA (1)
  • sunjj878 (1)
  • williamfgc (1)
  • pglpm (1)
Pull Request Authors
  • shahmoradi (11)
  • fagheri (3)
  • JoshuaOsborneDATA (2)
  • danielskatz (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 292 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 44
  • Total maintainers: 1
proxy.golang.org: github.com/cdslaborg/paramonte
  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 4 months ago
pypi.org: paramonte

Plain Powerful Parallel Monte Carlo and adaptive MCMC Library

  • Versions: 37
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 292 Last month
Rankings
Stargazers count: 4.6%
Dependent packages count: 7.3%
Forks count: 7.7%
Average: 12.6%
Downloads: 21.1%
Dependent repos count: 22.1%
Maintainers (1)
Last synced: 4 months ago