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
Napari sklearn decomposition

napari-sklearn-decomposition A simple plugin to use with napari This napari plug

1 Sep 01, 2022
Temporal Alignment Prediction for Supervised Representation Learning and Few-Shot Sequence Classification

Temporal Alignment Prediction for Supervised Representation Learning and Few-Shot Sequence Classification Introduction. This package includes the pyth

5 Dec 06, 2022
This machine-learning algorithm takes in data from the last 60 days and tries to predict tomorrow's price of any crypto you ask it.

Crypto-Currency-Predictor This machine-learning algorithm takes in data from the last 60 days and tries to predict tomorrow's price of any crypto you

Hazim Arafa 6 Dec 04, 2022
A Python implementation of the Robotics Toolbox for MATLAB

Robotics Toolbox for Python A Python implementation of the Robotics Toolbox for MATLAB® GitHub repository Documentation Wiki (examples and details) Sy

Peter Corke 1.2k Jan 07, 2023
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

CatBoost 6.9k Jan 05, 2023
Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques

Vowpal Wabbit is a machine learning system which pushes the frontier of machine learning with techniques such as online, hashing, allreduce, reductions, learning2search, active, and interactive learn

Vowpal Wabbit 8.1k Dec 30, 2022
My project contrasts K-Nearest Neighbors and Random Forrest Regressors on Real World data

kNN-vs-RFR My project contrasts K-Nearest Neighbors and Random Forrest Regressors on Real World data In many areas, rental bikes have been launched to

1 Oct 28, 2021
Cohort Intelligence used to solve various mathematical functions

Cohort-Intelligence-for-Mathematical-Functions About Cohort Intelligence : Cohort Intelligence ( CI ) is an optimization technique. It attempts to mod

Aayush Khandekar 2 Oct 25, 2021
Add built-in support for quaternions to numpy

Quaternions in numpy This Python module adds a quaternion dtype to NumPy. The code was originally based on code by Martin Ling (which he wrote with he

Mike Boyle 531 Dec 28, 2022
Adaptive: parallel active learning of mathematical functions

adaptive Adaptive: parallel active learning of mathematical functions. adaptive is an open-source Python library designed to make adaptive parallel fu

741 Dec 27, 2022
Send rockets to Mars with artificial intelligence(Genetic algorithm) in python.

Send Rockets To Mars With AI Send rockets to Mars with artificial intelligence(Genetic algorithm) in python. Tools Python 3 EasyDraw How to Play Insta

Mohammad Dori 3 Jul 15, 2022
🎛 Distributed machine learning made simple.

🎛 lazycluster Distributed machine learning made simple. Use your preferred distributed ML framework like a lazy engineer. Getting Started • Highlight

Machine Learning Tooling 44 Nov 27, 2022
Tutorials, examples, collections, and everything else that falls into the categories: pattern classification, machine learning, and data mining

**Tutorials, examples, collections, and everything else that falls into the categories: pattern classification, machine learning, and data mining.** S

Sebastian Raschka 4k Dec 30, 2022
XGBoost-Ray is a distributed backend for XGBoost, built on top of distributed computing framework Ray.

XGBoost-Ray is a distributed backend for XGBoost, built on top of distributed computing framework Ray.

92 Dec 14, 2022
LiuAlgoTrader is a scalable, multi-process ML-ready framework for effective algorithmic trading

LiuAlgoTrader is a scalable, multi-process ML-ready framework for effective algorithmic trading. The framework simplify development, testing, deployment, analysis and training algo trading strategies

Amichay Oren 458 Dec 24, 2022
a distributed deep learning platform

Apache SINGA Distributed deep learning system http://singa.apache.org Quick Start Installation Examples Issues JIRA tickets Code Analysis: Mailing Lis

The Apache Software Foundation 2.7k Jan 05, 2023
Lightning ⚡️ fast forecasting with statistical and econometric models.

Nixtla Statistical ⚡️ Forecast Lightning fast forecasting with statistical and econometric models StatsForecast offers a collection of widely used uni

Nixtla 2.1k Dec 29, 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
A collection of neat and practical data science and machine learning projects

Data Science A collection of neat and practical data science and machine learning projects Explore the docs » Report Bug · Request Feature Table of Co

Will Fong 2 Dec 10, 2021
Neural Machine Translation (NMT) tutorial with OpenNMT-py

Neural Machine Translation (NMT) tutorial with OpenNMT-py. Data preprocessing, model training, evaluation, and deployment.

Yasmin Moslem 29 Jan 09, 2023