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
MasTrade is a trading bot in baselines3,pytorch,gym

mastrade MasTrade is a trading bot in baselines3,pytorch,gym idea we have for example 1 btc and we buy a crypto with it with market option to trade in

Masoud Azizi 18 May 24, 2022
Gaussian Process Optimization using GPy

End of maintenance for GPyOpt Dear GPyOpt community! We would like to acknowledge the obvious. The core team of GPyOpt has moved on, and over the past

Sheffield Machine Learning Software 847 Dec 19, 2022
vortex particles for simulating smoke in 2d

vortex-particles-method-2d vortex particles for simulating smoke in 2d -vortexparticles_s

12 Aug 23, 2022
Steganography is the art of hiding the fact that communication is taking place, by hiding information in other information.

Steganography is the art of hiding the fact that communication is taking place, by hiding information in other information.

Priyansh Sharma 7 Nov 09, 2022
This machine learning model was developed for House Prices

This machine learning model was developed for House Prices - Advanced Regression Techniques competition in Kaggle by using several machine learning models such as Random Forest, XGBoost and LightGBM.

serhat_derya 1 Mar 02, 2022
Predicting Keystrokes using an Audio Side-Channel Attack and Machine Learning

Predicting Keystrokes using an Audio Side-Channel Attack and Machine Learning My

3 Apr 10, 2022
MLFlow in a Dockercontainer based on Azurite and Postgres

mlflow-azurite-postgres docker This is a MLFLow image which works with a postgres DB and a local Azure Blob Storage Instance (Azurite). This image is

2 May 29, 2022
Machine Learning Model to predict the payment date of an invoice when it gets created in the system.

Payment-Date-Prediction Machine Learning Model to predict the payment date of an invoice when it gets created in the system.

15 Sep 09, 2022
Applied Machine Learning for Graduate Program in Computer Science (PPGCC)

Applied Machine Learning for Graduate Program in Computer Science (PPGCC) - Federal University of Santa Catarina

Jônatas Negri Grandini 1 Dec 22, 2021
MIT-Machine Learning with Python–From Linear Models to Deep Learning

MIT-Machine Learning with Python–From Linear Models to Deep Learning | One of the 5 courses in MIT MicroMasters in Statistics & Data Science Welcome t

2 Aug 23, 2022
A Powerful Serverless Analysis Toolkit That Takes Trial And Error Out of Machine Learning Projects

KXY: A Seemless API to 10x The Productivity of Machine Learning Engineers Documentation https://www.kxy.ai/reference/ Installation From PyPi: pip inst

KXY Technologies, Inc. 35 Jan 02, 2023
Datetimes for Humans™

Maya: Datetimes for Humans™ Datetimes are very frustrating to work with in Python, especially when dealing with different locales on different systems

Timo Furrer 3.4k Dec 28, 2022
Random Forest Classification for Neural Subtypes

Random Forest classifier for neural subtypes extracted from extracellular recordings from human brain organoids.

Michael Zabolocki 1 Jan 31, 2022
A collection of machine learning examples and tutorials.

machine_learning_examples A collection of machine learning examples and tutorials.

LazyProgrammer.me 7.1k Jan 01, 2023
Can a machine learning project be implemented to estimate the salaries of baseball players whose salary information and career statistics for 1986 are shared?

END TO END MACHINE LEARNING PROJECT ON HITTERS DATASET Can a machine learning project be implemented to estimate the salaries of baseball players whos

Pinar Oner 7 Dec 18, 2021
We have a dataset of user performances. The project is to develop a machine learning model that will predict the salaries of baseball players.

Salary-Prediction-with-Machine-Learning 1. Business Problem Can a machine learning project be implemented to estimate the salaries of baseball players

Ayşe Nur Türkaslan 9 Oct 14, 2022
Bayesian Additive Regression Trees For Python

BartPy Introduction BartPy is a pure python implementation of the Bayesian additive regressions trees model of Chipman et al [1]. Reasons to use BART

187 Dec 16, 2022
Interactive Web App with Streamlit and Scikit-learn that applies different Classification algorithms to popular datasets

Interactive Web App with Streamlit and Scikit-learn that applies different Classification algorithms to popular datasets Datasets Used: Iris dataset,

Samrat Mitra 2 Nov 18, 2021
Interactive Parallel Computing in Python

Interactive Parallel Computing with IPython ipyparallel is the new home of IPython.parallel. ipyparallel is a Python package and collection of CLI scr

IPython 2.3k Dec 30, 2022
InfiniteBoost: building infinite ensembles with gradient descent

InfiniteBoost Code for a paper InfiniteBoost: building infinite ensembles with gradient descent (arXiv:1706.01109). A. Rogozhnikov, T. Likhomanenko De

Alex Rogozhnikov 183 Jan 03, 2023