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
Lseng-iseng eksplor Machine Learning dengan menggunakan library Scikit-Learn

Kalo dengar istilah ML, biasanya rada ambigu. Soalnya punya beberapa kepanjangan, seperti Mobile Legend, Makan Lontong, Ma**ng L*v* dan lain-lain. Tapi pada repo ini membahas Machine Learning :)

Alfiyanto Kondolele 1 Apr 06, 2022
ml4h is a toolkit for machine learning on clinical data of all kinds including genetics, labs, imaging, clinical notes, and more

ml4h is a toolkit for machine learning on clinical data of all kinds including genetics, labs, imaging, clinical notes, and more

Broad Institute 65 Dec 20, 2022
TensorFlowOnSpark brings TensorFlow programs to Apache Spark clusters.

TensorFlowOnSpark TensorFlowOnSpark brings scalable deep learning to Apache Hadoop and Apache Spark clusters. By combining salient features from the T

Yahoo 3.8k Jan 04, 2023
Machine Learning Techniques using python.

👋 Hi, I’m Fahad from TEXAS TECH. 👀 I’m interested in Optimization / Machine Learning/ Statistics 🌱 I’m currently learning Machine Learning and Stat

FAHAD MOSTAFA 1 Jan 19, 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
MegFlow - Efficient ML solutions for long-tailed demands.

Efficient ML solutions for long-tailed demands.

旷视天元 MegEngine 371 Dec 21, 2022
Scikit-Learn useful pre-defined Pipelines Hub

Scikit-Pipes Scikit-Learn useful pre-defined Pipelines Hub Usage: Install scikit-pipes It's advised to install sklearn-genetic using a virtual env, in

Rodrigo Arenas 1 Apr 26, 2022
fastFM: A Library for Factorization Machines

Citing fastFM The library fastFM is an academic project. The time and resources spent developing fastFM are therefore justified by the number of citat

1k Dec 24, 2022
Binary Classification Problem with Machine Learning

Binary Classification Problem with Machine Learning Solving Approach: 1) Ultimate Goal of the Assignment: This assignment is about solving a binary cl

Dinesh Mali 0 Jan 20, 2022
Polyglot Machine Learning example for scraping similar news articles.

Polyglot Machine Learning example for scraping similar news articles In this example, we will see how we can work with Machine Learning applications w

MetaCall 15 Mar 28, 2022
Scikit-Garden or skgarden is a garden for Scikit-Learn compatible decision trees and forests.

Scikit-Garden or skgarden (pronounced as skarden) is a garden for Scikit-Learn compatible decision trees and forests.

260 Dec 21, 2022
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 Software Framework for Neuromorphic Computing

A Software Framework for Neuromorphic Computing

Lava 338 Dec 26, 2022
A concept I came up which ditches the idea of "layers" in a neural network.

Dynet A concept I came up which ditches the idea of "layers" in a neural network. Install Copy Dynet.py to your project. Run the example Install matpl

Anik Patel 4 Dec 05, 2021
fMRIprep Pipeline To Machine Learning

fMRIprep Pipeline To Machine Learning(Demo) 所有配置均在config.py文件下定义 前置环境(lilab) 各个节点均安装docker,并有fmripre的镜像 可以使用conda中的base环境(相应的第三份包之后更新) 1. fmriprep scr

Alien 3 Mar 08, 2022
Falken provides developers with a service that allows them to train AI that can play their games

Falken provides developers with a service that allows them to train AI that can play their games. Unlike traditional RL frameworks that learn through rewards or batches of offline training, Falken is

Google Research 223 Jan 03, 2023
LibRerank is a toolkit for re-ranking algorithms. There are a number of re-ranking algorithms, such as PRM, DLCM, GSF, miDNN, SetRank, EGRerank, Seq2Slate.

LibRerank LibRerank is a toolkit for re-ranking algorithms. There are a number of re-ranking algorithms, such as PRM, DLCM, GSF, miDNN, SetRank, EGRer

126 Dec 28, 2022
Deploy AutoML as a service using Flask

AutoML Service Deploy automated machine learning (AutoML) as a service using Flask, for both pipeline training and pipeline serving. The framework imp

Chris Rawles 221 Nov 04, 2022
Karate Club: An API Oriented Open-source Python Framework for Unsupervised Learning on Graphs (CIKM 2020)

Karate Club is an unsupervised machine learning extension library for NetworkX. Please look at the Documentation, relevant Paper, Promo Video, and Ext

Benedek Rozemberczki 1.8k Jan 03, 2023
A comprehensive set of fairness metrics for datasets and machine learning models, explanations for these metrics, and algorithms to mitigate bias in datasets and models.

AI Fairness 360 (AIF360) The AI Fairness 360 toolkit is an extensible open-source library containg techniques developed by the research community to h

1.9k Jan 06, 2023