ParaMonte is a serial/parallel library of Monte Carlo routines for sampling mathematical objective functions of arbitrary-dimensions

Overview

ParaMonte: Plain Powerful Parallel Monte Carlo Library

ParaMonte is a serial/parallel library of Monte Carlo routines for sampling mathematical objective functions of arbitrary-dimensions, in particular, the posterior distributions of Bayesian models in data science, Machine Learning, and scientific inference, with the design goal of unifying the automation (of Monte Carlo simulations), user-friendliness (of the library), accessibility (from multiple programming environments), 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 all Monte Carlo simulations to the highest levels possible to ensure the highest level of user-friendliness of the library and minimal time investment requirements for building, running, and post-processing of simulation models.

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

  • High-Performance meticulously-low-level implementation of the library to ensure the fastest-possible Monte Carlo simulations.

  • Parallelizability of all simulations via two-sided and one-sided MPI/Coarray 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 up to 16 digits of precision as requested by the user.

  • Comprehensive-reporting and post-processing of each simulation and its results, as well as their automatic storage in external files to ensure the simulation results will be comprehensible and reproducible at any time in the distant future.

Installation

The pre-built 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 GitHub repository of the project. The ParaMonte library installation/build process is fully automated for all of the supported programming languages. Currently, the following compiler suites are supported for builds from source:

Compiler Suite Linux macOS Windows (64bit)
GNU Compiler Collection > 8.4
Intel Parallel Studio > 19.1.1

For more information and quick-start in the programming language of your choice, visit the ParaMonte library homepage.

Dependencies

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

Parallelism

The ParaMonte library relies on the Message Passing Interface (MPI) standard for inter-processor communications. To run a parallel simulation, you will have to have a compatible MPI runtime library installed on your system. In most cases, ParaMonte will automatically install the required missing libraries on your system (with your permission). These automatic checks and installations happen when you download and install or use the library on your system, for the first time. If the automatic installation is unsuccessful, you can also install the libraries manually on your system:

  • 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, also available in the latest release of the ParaMonte library on the GitHub release page (For Windows, look for the executable file that ends with .exe. For Linux, look for the file that ends with .tgz, like l_mpi-rt_2018.2.199.tgz).
  • On macOS, the Intel MPI library is not available. Therefore, we recommend installing either Open-MPI or MPICH MPI runtime libraries depending the prebuilt version of the ParaMonte library that you have downloaded or the configuration with which you intend to build the library.

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

Example usage instructions

Citing ParaMonte

The ParaMonte library is an honor-ware, the currency of which is acknowledgment and citations.

If you use ParaMonte or any ideas from the 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

MIT License

What does this license mean?

Essentially, all we are asking from the users or developers is to

explicitly acknowledge the use of this library or any concepts or parts of it in their education, research, or software (free or commercial).

This is a free software, so help us keep it freely available to the public by redistributing the library and contributing to it. If you have questions or concerns about the license, do not hesitate to contact us ([email protected]).

Authors and contributors

  • Amir Shahmoradi

    • astrophysicist/bioinformatician by training (and a science-lover in general),
    • Ph.D. in computational physics/bioinformatics from the University of Texas at Austin,
    • currently a faculty member of Physics and Data Science at The University of Texas at Arlington,
    • with teaching/research experience/background in computational and data sciences, statistics, data analysis, and modeling, stochastic processes, Monte Carlo Methods, Bayesian probability theory, high energy physics, astronomy and astrophysics, computational physics, Molecular Dynamics simulations, biomedical science and MRI data analysis, bioinformatics and evolutionary biology (viral evolution, protein dynamics, and interactions),
    • contact: [email protected]
  • Fatemeh Bagheri

    • physicist / cosmologist by training,
    • currently a UTA Physics member,
    • deep philosophical thinker,
    • contact: [email protected]
  • Shashank Kumbhare

    • physicist / Computational Data Scientist,
    • currently a UTA Physics member,
    • contact: [email protected]
  • Joshua Osborne

    • physicist / Computational Data Scientist by training,
    • currently a UTA Physics member,
    • contact: [email protected]

For more information, visit cdslab.org/pm or contact Amir Shahmoradi: [email protected]

Comments
  • General: How to run in parallel?

    General: How to run in parallel?

    I'm playing with the example provided with the binary release (libparamonte_fortran_linux_x64_gnu_release_dynamic_heap_openmpi) and I'm not clear how to run in parallel.

    In serial mode things seem okay. However, if I do:

    ./run.sh -n 2
    

    I get this message in stdout (among others):

            ParaDRAM - NOTE: ParaDRAM is being used in parallel mode but with only one processor. This is computationally inefficient. 
            ParaDRAM - NOTE: Consider using the serial version of the code or provide more processes at runtime if it is beneficial.
    

    I get the same result if I change the number of processes, or if I run the program directly, mpiexec -n 2 ./main.exe.

    In reference to https://github.com/openjournals/joss-reviews/issues/2741

    opened by milancurcic 4
  • Defect: building paramonte main on Ubuntu 20.04 fails with GNU

    Defect: building paramonte main on Ubuntu 20.04 fails with GNU

    The programming language (e.g., all/C/C++/Fortran/Julia/MATLAB/Python/R/...): Fortran

    The compiler/interprerter (e.g., none/GNU/Intel/IBM/NAG/Cray/PGI-NVIDIA/Anaconda/...): GNU

    The operating system (e.g., all/Windows/Linux/macOS/WSL1/WSL2/...): Linux Ubuntu 20.04

    The architecture (e.g., all/x86_x64/Intelx64/ARM/POWER9/...): x86_64

    Describe the bug Paramonte main fails to build on standard Ubuntu 20 (configures fine with cmake) with error message:

    $ make -j 8
    Scanning dependencies of target paramonte_c_linux_x64_gnu_release_static_stack
    make[2]: *** No rule to make target '../src/kernel/[email protected]@kernel.inc.f90', needed by 'obj/CMakeFiles/paramonte_c_linux_x64_gnu_release_static_stack.dir/ParaMonte_mod.f90.o'.  Stop.
    make[2]: *** Waiting for unfinished jobs....
    [  1%] Building Fortran object obj/CMakeFiles/paramonte_c_linux_x64_gnu_release_static_stack.dir/DateTime_mod.f90.o
    [  1%] Building Fortran object obj/CMakeFiles/paramonte_c_linux_x64_gnu_release_static_stack.dir/Constants_mod.f90.o
    make[1]: *** [CMakeFiles/Makefile2:171: obj/CMakeFiles/paramonte_c_linux_x64_gnu_release_static_stack.dir/all] Error 2
    make: *** [Makefile:130: all] Error 2
    

    To Reproduce

    $ cmake -DPMCS=GNU ..
    $ make -j
    

    Expected behavior Paramonte main should build cleanly

    Additional context JOSS review

    opened by williamfgc 1
  • run.sh should error out on a bad CLI argument

    run.sh should error out on a bad CLI argument

    Using run.sh provided in libparamonte_fortran_linux_x64_gnu_release_dynamic_heap_openmpi binary release.

    Try:

    $ ./run.sh --bad-arg
    

    or similar. The script should give a helpful message to the user, but instead, nothing is output.

    On a positive side, the status code is non-zero, as expected:

    $ ./run.sh --bad-arg
    $ echo $?
    1
    

    This is in reference to https://github.com/openjournals/joss-reviews/issues/2741

    opened by milancurcic 1
  • License agreement terms

    License agreement terms

    Paramonte is MIT licensed.

    However, ACKNOWLEDGMENT.md states:

    As per the ParaMonte library license agreement terms, if you use any parts of this library for any purposes, kindly acknowledge the use of ParaMonte in your work (education/research/industry/development/...) by citing the ParaMonte library's main publications as listed here:

    The MIT license doesn't require acknowledgment, only that the copyright statement and the license body is included in the copy.

    So I think the first paragraph in the ACKNOWLEDGMENT.md should be reworded to something like:

    If you use ParaMonte, please acknowledge it by citing the ParaMonte library's main publications

    to ask for acknowledgment but not make it sound like it's a legal requirement.

    opened by milancurcic 1
  • 0649417617​

    0649417617​

    วันที่/เวลา ปลายทาง หน่วย ค่าบริการ (฿) บริการรับส่งข้อความ MMS (ครั้ง) 1 6.42 28/10/2563 12:05:00 0858899541 1 6.42 Internet 16 GB 124 MB 503 KB 2.75 03/10/2563 01:39:01 Mobilenet 174 KB 0.00 03/10/2563 02:55:24 Mobilenet 13 MB 129 KB 0.00 03/10/2563 05:55:25 Mobilenet 128 KB 0.00 03/10/2563 07:47:36 Mobilenet 245 KB 0.00 03/10/2563 07:47:44 Mobilenet 7 MB 420 KB 0.00 03/10/2563 08:09:12 Mobilenet 8 MB 231 KB 0.00 03/10/2563 08:16:02 Mobilenet 1 MB 288 KB 0.00 03/10/2563 08:18:20 Mobilenet 1 MB 309 KB 0.00 03/10/2563 11:15:50 Mobilenet 692 KB 0.00 03/10/2563 14:37:59 Mobilenet 6 MB 869 KB 0.00 03/10/2563 17:18:04 Mobilenet 33 MB 507 KB 0.00 03/10/2563 21:01:20 Mobilenet 1 MB 55 KB 0.00 03/10/2563 22:32:39 Mobilenet 752 KB 0.00 03/10/2563 22:33:57 Mobilenet 115 KB 0.00 03/10/2563 22:35:16 Mobilenet 66 MB 614 KB 0.00 03/10/2563 23:59:08 Mobilenet 16 KB 0.00 04/10/2563 00:00:00 Mobilenet 170 KB 0.00

    • ของ 303 รายการ

    1 2 3 4 5 ... 16

    20 ย้อนกลับ มีข้อสงสัยเกี่ยวกับรายละเอียดการใช้บริการ กรุณาเลือกแจ้งปัญหา เพื่อแจ้งรายละเอียด แจ้งปัญหา

    opened by Higggg 1
  • Resolves #3, resolves #4, resolves #5

    Resolves #3, resolves #4, resolves #5

    opened by shahmoradi 0
  • The library tests are all performed by default for every build from source

    The library tests are all performed by default for every build from source

    Users can suppress the tests during the build via the install.sh -t false or install.sh -test_enabled false . Code coverage analysis tools and flags are also added. To generate code coverage report (via GNU-gcov or Intel codecov), try install.sh --codecov.

    opened by shahmoradi 0
  • Enhancement: improved diagnostic message about windows global file locks

    Enhancement: improved diagnostic message about windows global file locks

    The programming language (e.g., all/C/C++/Fortran/Julia/MATLAB/Python/R/...): all (python)

    The operating system (e.g., all/Windows/Linux/macOS/WSL1/WSL2/...): Windows

    The architecture (e.g., all/x86_x64/Intelx64/ARM/POWER9/...): all

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. It would be great to have this new algorithm [...] Yes, Windows frequently locks the output files from the Paradram sampler if a runtime error occurs. This happens commonly in interpreted languages where the runtime session keeps running, while the paramonte sampler run and the corresponding DLL fail for some reason and lock the files with the opened DLL, such that any future runs will not be able to overwrite the old existing files, because their ownership remains with the original opened DLL.

    Describe the solution you'd like A clear and concise description of what you want to happen. While there is no remedy for the global windows locks, the sampler could attempt to delete the existing files and if the deletion fails, it would print a diagnostic message that better describes the nature of the error and the specific solution to it, which is a reset of the environment (application, python session, matlab, ...) to clear the ownership of the files.

    Describe alternatives you've considered if any A clear and concise description of any alternative solutions or features you've considered. Currently the messages are somewhat unclear about the cause of the error.

    Additional context Add any other context or screenshots about the feature request here. This happens frequently in ipython or jupyter notebook sessions.

    opened by JoshuaOsborneDATA 0
  • `pmpd.readReport()` method is not working properly in Python

    `pmpd.readReport()` method is not working properly in Python

    MatDRAM_run_20220218_184133_901_process_1_report.txt

    import paramonte as pm
    pmpd = pm.ParaDRAM()
    pmpd.readReport("https://github.com/cdslaborg/paramonte/files/8289996/MatDRAM_run_20220218_184133_901_process_1_report.txt")
    pmpd.reportList[0].stats.chain   # this line is not working
    

    (see the attached image) The same works in paramonte MATLAB.

    MicrosoftTeams-image

    opened by ShashankKumbhare 1
  • Enhancement: automated OpenMPI library build and installation by the ParaMonte build script when requested

    Enhancement: automated OpenMPI library build and installation by the ParaMonte build script when requested

    The programming language (e.g., all/C/C++/Fortran/Julia/MATLAB/Python/R/...): all

    The operating system (e.g., all/Windows/Linux/macOS/WSL1/WSL2/...): Linux/macOS

    The architecture (e.g., all/x86_x64/Intelx64/ARM/POWER9/...): x86_x64

    Is your feature request related to a problem? Please describe. The build script currently lacks the ability to automatically build and install the OpenMPI library. Furthermore, the support for the OpenMPI library in the setup file generation is currently not quite robust and well developed.

    Describe the solution you'd like The kernel build script should accept the name of the MPI library to be used for building the ParaMonte library. It must then be able to check if the requested library exists on the system and if not be able to automatically download and install the library on the system and use the requested MPI library to build ParaMonte and run examples and tests using the requested library.

    Describe alternatives you've considered if any The current solution requires a manual installation of the OpenMPI library which is not optimal.

    opened by shahmoradi 0
Releases(v1.5.1)
Owner
Computational Data Science Lab
Computational Data Science research and education, made as simple as possible, but not simpler.
Computational Data Science Lab
Predict the demand for electricity (R) - FRENCH

06.demand-electricity Predict the demand for electricity (R) - FRENCH Prédisez la demande en électricité Prérequis Pour effectuer ce projet, vous devr

1 Feb 13, 2022
customer churn prediction prevention in telecom industry using machine learning and survival analysis

Telco Customer Churn Prediction - Plotly Dash Application Description This dash application allows you to predict telco customer churn using machine l

Benaissa Mohamed Fayçal 3 Nov 20, 2021
Fast Fourier Transform-accelerated Interpolation-based t-SNE (FIt-SNE)

FFT-accelerated Interpolation-based t-SNE (FIt-SNE) Introduction t-Stochastic Neighborhood Embedding (t-SNE) is a highly successful method for dimensi

Kluger Lab 547 Dec 21, 2022
Official code for HH-VAEM

HH-VAEM This repository contains the official Pytorch implementation of the Hierarchical Hamiltonian VAE for Mixed-type Data (HH-VAEM) model and the s

Ignacio Peis 8 Nov 30, 2022
whylogs: A Data and Machine Learning Logging Standard

whylogs: A Data and Machine Learning Logging Standard whylogs is an open source standard for data and ML logging whylogs logging agent is the easiest

WhyLabs 2k Jan 06, 2023
Module is created to build a spam filter using Python and the multinomial Naive Bayes algorithm.

Naive-Bayes Spam Classificator Module is created to build a spam filter using Python and the multinomial Naive Bayes algorithm. Main goal is to code a

Viktoria Maksymiuk 1 Jun 27, 2022
Code for the TCAV ML interpretability project

Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV) Been Kim, Martin Wattenberg, Justin Gilmer, C

552 Dec 27, 2022
A benchmark of data-centric tasks from across the machine learning lifecycle.

A benchmark of data-centric tasks from across the machine learning lifecycle.

61 Dec 28, 2022
A toolkit for making real world machine learning and data analysis applications in C++

dlib C++ library Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real worl

Davis E. King 11.6k Jan 02, 2023
MLBox is a powerful Automated Machine Learning python library.

MLBox is a powerful Automated Machine Learning python library. It provides the following features: Fast reading and distributed data preprocessing/cle

Axel 1.4k Jan 06, 2023
A scikit-learn based module for multi-label et. al. classification

scikit-multilearn scikit-multilearn is a Python module capable of performing multi-label learning tasks. It is built on-top of various scientific Pyth

802 Jan 01, 2023
This is the material used in my free Persian course: Machine Learning with Python

This is the material used in my free Persian course: Machine Learning with Python

Yara Mohamadi 4 Aug 07, 2022
A library to generate synthetic time series data by easy-to-use factors and generator

timeseries-generator This repository consists of a python packages that generates synthetic time series dataset in a generic way (under /timeseries_ge

Nike Inc. 87 Dec 20, 2022
Time series changepoint detection

changepy Changepoint detection in time series in pure python Install pip install changepy Examples from changepy import pelt from cha

Rui Gil 92 Nov 08, 2022
LibTraffic is a unified, flexible and comprehensive traffic prediction library based on PyTorch

LibTraffic is a unified, flexible and comprehensive traffic prediction library, which provides researchers with a credibly experimental tool and a convenient development framework. Our library is imp

432 Jan 05, 2023
Python package for machine learning for healthcare using a OMOP common data model

This library was developed in order to facilitate rapid prototyping in Python of predictive machine-learning models using longitudinal medical data from an OMOP CDM-standard database.

Sontag Lab 75 Jan 03, 2023
jaxfg - Factor graph-based nonlinear optimization library for JAX.

Factor graphs + nonlinear optimization in JAX

Brent Yi 134 Dec 21, 2022
Credit Card Fraud Detection, used the credit card fraud dataset from Kaggle

Credit Card Fraud Detection, used the credit card fraud dataset from Kaggle

Sean Zahller 1 Feb 04, 2022
A collection of Scikit-Learn compatible time series transformers and tools.

tsfeast A collection of Scikit-Learn compatible time series transformers and tools. Installation Create a virtual environment and install: From PyPi p

Chris Santiago 0 Mar 30, 2022
Bayesian optimization based on Gaussian processes (BO-GP) for CFD simulations.

BO-GP Bayesian optimization based on Gaussian processes (BO-GP) for CFD simulations. The BO-GP codes are developed using GPy and GPyOpt. The optimizer

KTH Mechanics 8 Mar 31, 2022