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
cleanlab is the data-centric ML ops package for machine learning with noisy labels.

cleanlab is the data-centric ML ops package for machine learning with noisy labels. cleanlab cleans labels and supports finding, quantifying, and lear

Cleanlab 51 Nov 28, 2022
MLOps pipeline project using Amazon SageMaker Pipelines

This project shows steps to build an end to end MLOps architecture that covers data prep, model training, realtime and batch inference, build model registry, track lineage of artifacts and model drif

AWS Samples 3 Sep 16, 2022
This repo implements a Topological SLAM: Deep Visual Odometry with Long Term Place Recognition (Loop Closure Detection)

This repo implements a topological SLAM system. Deep Visual Odometry (DF-VO) and Visual Place Recognition are combined to form the topological SLAM system.

Best of Australian Centre for Robotic Vision (ACRV) 32 Jun 23, 2022
Microsoft 5.6k Jan 07, 2023
Module for statistical learning, with a particular emphasis on time-dependent modelling

Operating system Build Status Linux/Mac Windows tick tick is a Python 3 module for statistical learning, with a particular emphasis on time-dependent

X - Data Science Initiative 410 Dec 14, 2022
A repository of PyBullet utility functions for robotic motion planning, manipulation planning, and task and motion planning

pybullet-planning (previously ss-pybullet) A repository of PyBullet utility functions for robotic motion planning, manipulation planning, and task and

Caelan Garrett 260 Dec 27, 2022
This repository contains full machine learning pipeline of the Zillow Houses competition on Kaggle platform.

Zillow-Houses This repository contains full machine learning pipeline of the Zillow Houses competition on Kaggle platform. Pipeline is consists of 10

2 Jan 09, 2022
Decision Tree Regression algorithm implemented on Python from scratch.

Decision_Tree_Regression I implemented the decision tree regression algorithm on Python. Unlike regular linear regression, this algorithm is used when

1 Dec 22, 2021
Python factor analysis library (PCA, CA, MCA, MFA, FAMD)

Prince is a library for doing factor analysis. This includes a variety of methods including principal component analysis (PCA) and correspondence anal

Max Halford 915 Dec 31, 2022
easyNeuron is a simple way to create powerful machine learning models, analyze data and research cutting-edge AI.

easyNeuron is a simple way to create powerful machine learning models, analyze data and research cutting-edge AI.

Neuron AI 5 Jun 18, 2022
Python module for data science and machine learning users.

dsnk-distributions package dsnk distribution is a Python module for data science and machine learning that was created with the goal of reducing calcu

Emmanuel ASIFIWE 1 Nov 23, 2021
Python Research Framework

Python Research Framework

EleutherAI 106 Dec 13, 2022
QuickAI is a Python library that makes it extremely easy to experiment with state-of-the-art Machine Learning models.

QuickAI is a Python library that makes it extremely easy to experiment with state-of-the-art Machine Learning models.

152 Jan 02, 2023
Sleep stages are classified with the help of ML. We have used 4 different ML algorithms (SVM, KNN, RF, NN) to demonstrate them

Sleep stages are classified with the help of ML. We have used 4 different ML algorithms (SVM, KNN, RF, NN) to demonstrate them.

Anirudh Edpuganti 3 Apr 03, 2022
Distributed Tensorflow, Keras and PyTorch on Apache Spark/Flink & Ray

A unified Data Analytics and AI platform for distributed TensorFlow, Keras and PyTorch on Apache Spark/Flink & Ray What is Analytics Zoo? Analytics Zo

2.5k Dec 28, 2022
Implementation of the Object Relation Transformer for Image Captioning

Object Relation Transformer This is a PyTorch implementation of the Object Relation Transformer published in NeurIPS 2019. You can find the paper here

Yahoo 158 Dec 24, 2022
Extreme Learning Machine implementation in Python

Python-ELM v0.3 --- ARCHIVED March 2021 --- This is an implementation of the Extreme Learning Machine [1][2] in Python, based on scikit-learn. From

David C. Lambert 511 Dec 20, 2022
MooGBT is a library for Multi-objective optimization in Gradient Boosted Trees.

MooGBT is a library for Multi-objective optimization in Gradient Boosted Trees. MooGBT optimizes for multiple objectives by defining constraints on sub-objective(s) along with a primary objective. Th

Swiggy 66 Dec 06, 2022
Python Extreme Learning Machine (ELM) is a machine learning technique used for classification/regression tasks.

Python Extreme Learning Machine (ELM) Python Extreme Learning Machine (ELM) is a machine learning technique used for classification/regression tasks.

Augusto Almeida 84 Nov 25, 2022
An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models

Seldon Core: Blazing Fast, Industry-Ready ML An open source platform to deploy your machine learning models on Kubernetes at massive scale. Overview S

Seldon 3.5k Jan 01, 2023