Coder Social home page Coder Social logo

cdslaborg / paramonte Goto Github PK

View Code? Open in Web Editor NEW
245.0 11.0 31.0 54.27 MB

ParaMonte: Parallel Monte Carlo and Machine Learning Library for Python, MATLAB, Fortran, C++, C.

Home Page: https://www.cdslab.org/paramonte

License: Other

CMake 0.86% Shell 0.22% Fortran 94.58% C 0.12% Batchfile 0.10% Python 1.29% MATLAB 2.68% HTML 0.06% C++ 0.10% Java 0.01%
monte-carlo markov-chain adaptive-learning bayesian-inference bayesian-statistics machine-learning machine-learning-algorithms machine-learning-library sampling c

paramonte's Introduction

ParaMonte: Parallel Monte Carlo and Machine Learning

ParaMonte is a serial/parallel library of Monte Carlo routines for sampling mathematical density functions of arbitrary dimensions and Machine Learning (ML) algorithms for scientific inference, with the design goal of unifying automation (of simulations and tasks), user-friendliness (of algorithms), accessibility (from any platform or programming environment), 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 Monte Carlo and Machine Learning simulations as much as possible to ensure user-friendliness of the library and minimal time investment requirements for building, running, and post-processing simulation models.

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

  • High-Performance meticulously-low-level library implementation to ensure the fastest-possible inferences.

  • Parallelizability of all simulations via shared-memory OpenMP threads and two-sided and one-sided MPI/Coarray distributed 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 with arbitrary digits of precision as requested by the user.

  • Comprehensive reporting and post-processing of simulations and ML tasks, as well as their automatic storage in external files to ensure the simulation results will be understandable and reproducible at any time in the foreseeable future.

Quick Start

  • Follow the quick start instructions in this QUICKSTART.md file.
  • For programming languages other than C, C++, Fortran, see the quick start section of the README.md file in the corresponding language's source subfolder in the src folder in the root directory of the ParaMonte repository.

Installation

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

Compiler Suite Linux macOS Windows (64bit)
GNU Compiler Collection > 10.3
Intel OneAPI > 2021.8.0

Dependencies

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

Parallelism

The ParaMonte library relies on three independent parallelism paradigms for parallel applications:

  1. The Coarray parallelism (only available for select routines in the Fortran programming language).
  2. The Message Passing Interface (MPI) standard for inter-processor distributed parallelism.
    • 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. This requires the ParaMonte library to be (or have been prebuilt) using the Intel compilers.
    • On macOS, the Intel MPI library is not available. Therefore, we recommend installing either Open-MPI or MPICH MPI runtime libraries depending on the prebuilt version of the ParaMonte library that you have downloaded or the configuration with which you intend to build the library.

Read the install.md installation instruction notes to learn more about the library's optional parallel build configurations.

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

Example Usage Instructions

Citing ParaMonte

The ParaMonte library is an honor-ware and its currency is acknowledgment and citations.

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

The majority of the ParaMonte library routines are distributed under the permissive MIT License plus acknowledgments that are detailed in LICENSE.md.

However, there are occasionally modernized and extended routines from external projects, particularly within the ParaMonte Fortran library. These routines may have a license that does not fully overlap with the default ParaMonte library license LICENSE.md. In such cases, the documentation and source code of the specific routine explicitly list the original license information.

This is free software, so help us keep it freely available to the public by acknowledging the usage and contributing to it. If you have questions or concerns about the license, please get in touch with the project's lead ([email protected]).

Authors and Contributors

  • Amir Shahmoradi

    • Astrophysicist/bioinformatician by training,
    • Ph.D. in computational physics/bioinformatics, The University of Texas at Austin,
    • Currently a faculty member of the Data Science and Physics programs at UT Arlington,
    • Contact: [email protected]
  • Fatemeh Bagheri

    • PhD in Astronomy,
    • PhD in Space Physics,
    • Deep philosophical thinker,
    • Currently at NASA Goddard Space Flight Center,
    • Contact: [email protected]
  • Joshua Osborne

    • Physicist / computational data scientist by training,
    • Currently a Physics PhD candidate at UT Arlington,
    • Contact: [email protected]

Contributing to ParaMonte

Please read the generic contribution guidelines listed in CONTRIBUTING.md.

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

paramonte's People

Contributors

danielskatz avatar fagheri avatar joshuaosbornedata avatar shahmoradi avatar shashankkumbhare avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paramonte's Issues

Samplers for discrete (nominal) spaces

R/Fortran, Linux, x86_x64

(Following this issue comment)

I see that Paramonte offers sampling on continuous, Rⁿ spaces. I'd like to request some sampling capability on finite, discrete spaces, and Cartesian products of real and discrete spaces. This kind of sampling is very important for nominal data.

Ordinal data can be sampled by a continuous sampler by introducing a continuous latent variate, and then considering the ordinal variate as an indicator-function over the continuous-variate's space. This also takes care of some degree of smoothing (reflecting an a-priori low expectation of many big jumps) of the probability distribution for the ordinal variate.

But this very smoothing effect is why this kind of latent-variate approach does not work well with nominal data, whose values can in principle be arbitrarily shuffled.

Data of this type occur very frequently in medical applications. Typical medical predictors include nominal data such as presence/absence of particular genes (binary variates, including sex), membership in one or another risk groups that don't have any specific ordering, and similar variates. Often the predictors also include interval and ordinal variates (volumes of internal organs, blood levels, age, Likert scales, and similar). See the example in this preprint.

I am trying to develop an R package for Bayesian nonparametric density inference, especially for use in medicine, that is enough flexible to include all these kinds of variates, and at the same time is as user-friendly as possible, not requiring the clinician to worry about Monte Carlo sampling. Paramonte would be wonderful for this. At the moment my prototype package uses Nimble for Monte Carlo sampling. Nimble offers built-in categorical and Dirichlet/simplex samplers that can be combined with samplers for continuous spaces.

Thank you for this great project!

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.

Defect: Test_Statistics_mod@test_getBetaCDF_SPR_1 fails on Darwin PPC

883 tests performed. 99.89% of 883 tests passed. 1 tests failed. The total elapsed wall-clock time: 48.717209 seconds.


The following tests FAILED:

    1 - Test_Statistics_mod@test_getBetaCDF_SPR_1

Where do I check detailed test output on a failure? The structure of directories is a nightmare here :)

Defect: ParaMonte::MATLAB fails to download the necessary MPI dependency files from the release page.

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

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

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

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

Describe the bug
A clear and concise description of what the bug is.
See this discussion.

To Reproduce
See this discussion.

Expected behavior
The error should not happen.

[paramonteMatPar] Defect: Error: Derived type 'c_ptr' at (1) is being used before it is defined

This does not occur on paramonte from the main repo from commit 08b5ee7
Something got broken in recent commits to paramonteMatPar.

[  5%] Building Fortran object obj/CMakeFiles/paramonte.dir/ParaMonteLogFunc_mod.f90.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte-devel/work/build/obj && /opt/local/bin/mpif90-mpich-gcc12 -Dparamonte_EXPORTS  -pipe -Os -m32 -mmacosx-version-min=10.6 -J../mod -fPIC -cpp -DGNU_COMPILER_ENABLED -DCFI_ENABLED "-DPARAMONTE_VERSION=\"'1.5.1'\"" -DOS_IS_DARWIN -DC_ENABLED -DBASIC_TEST_ENABLED -DSAMPLER_TEST_ENABLED -DDLL_ENABLED -DMPI_ENABLED -DOMP_ENABLED -fstack-arrays -ffree-line-length-none -std=legacy -pthread -fopt-info-all=GFortranOptReport.txt -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdce -fdefer-pop -fdse -fforward-propagate -fguess-branch-probability -fif-conversion -fif-conversion2 -finline-functions-called-once -fipa-profile -fipa-pure-const -fipa-reference -fipa-reference-addressable -fmerge-constants -fmove-loop-invariants -fomit-frame-pointer -freorder-blocks -fshrink-wrap -fshrink-wrap-separate -fsplit-wide-types -fssa-backprop -fssa-phiopt -ftree-bit-ccp -ftree-ccp -ftree-ch -ftree-coalesce-vars -ftree-copy-prop -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-pta -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-sra -ftree-ter -funit-at-a-time -falign-functions -falign-jumps -falign-labels -falign-loops -fcaller-saves -fcode-hoisting -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads -finline-functions -finline-small-functions -findirect-inlining -fipa-bit-cp -fipa-cp -fipa-icf -fipa-ra -fipa-sra -fipa-vrp -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -freorder-blocks-algorithm=stc -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fsched-interblock -fsched-spec -fstore-merging -fstrict-aliasing -fthread-jumps -ftree-builtin-call-dce -ftree-pre -ftree-switch-conversion -ftree-tail-merge -ftree-vrp -fgcse-after-reload -fipa-cp-clone -floop-interchange -floop-unroll-and-jam -fpeel-loops -fpredictive-commoning -fsplit-paths -ftree-loop-distribute-patterns -ftree-loop-distribution -ftree-loop-vectorize -ftree-partial-pre -ftree-slp-vectorize -funswitch-loops -fvect-cost-model -fversion-loops-for-strides -fopenmp -shared -fPIC -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte-devel/work/paramonteMatPar-9cf41519b0479f6cc2c1e09ad7f41d22f30483a3/src/kernel/ParaMonteLogFunc_mod.f90 -o CMakeFiles/paramonte.dir/ParaMonteLogFunc_mod.f90.o
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte-devel/work/paramonteMatPar-9cf41519b0479f6cc2c1e09ad7f41d22f30483a3/src/kernel/ParaMonteLogFunc_mod.f90:60:24:

   60 |             type(c_ptr)                     :: logFunc
      |                        1
Error: Derived type 'c_ptr' at (1) is being used before it is defined

Discussion 32: A more sysmatic approach to ensuring simulation convergence.

Discussed in #32

See my response to @arwelHughes for details.

Originally posted by Peku995 August 3, 2023
I have an idea for the upcoming release: At the moment, it is not possible to use a completely finished simulation as a starting point to carry out further iterations from here (at least to my knowledge). At the moment, this is only possible for simulations that are not completely finished. I think it would improve the restart capabilities of Paramonte considerably if you could also start from simulations that have already ended and then simply save the whole thing under a different name.

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
ย้อนกลับ
มีข้อสงสัยเกี่ยวกับรายละเอียดการใช้บริการ กรุณาเลือกแจ้งปัญหา เพื่อแจ้งรายละเอียด
แจ้งปัญหา

Please make a new release, existing one is broken, while master builds fine

Apparently it was forgotten to be added to sources list in CMakeLists:

--->  Building paramonte
Executing:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build" && /usr/bin/make -j6 -w all VERBOSE=ON 
make: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build'
/opt/local/bin/cmake -S/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-1.5.1 -B/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build --check-build-system CMakeFiles/Makefile.cmake 0
/opt/local/bin/cmake -E cmake_progress_start /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/CMakeFiles /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build//CMakeFiles/progress.marks
/usr/bin/make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build'
/usr/bin/make  -f obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/build.make obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/depend
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build'
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build && /opt/local/bin/cmake -E cmake_depends "Unix Makefiles" /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-1.5.1 /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-1.5.1/src/kernel /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/DependInfo.cmake --color=
Dependee "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/DependInfo.cmake" is newer than depender "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/depend.internal".
Dependee "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/depend.internal".
Scanning dependencies of target paramonte_c_darwin_ppc_gnu_release_static_stack
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build'
/usr/bin/make  -f obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/build.make obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/build
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build'
make[2]: *** No rule to make target `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-1.5.1/src/kernel/ParaMonte_mod@[email protected]', needed by `obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/ParaMonte_mod.f90.o'.  Stop.
make[2]: *** Waiting for unfinished jobs....
[  1%] Building Fortran object obj/CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/DateTime_mod.f90.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj && /opt/local/bin/gfortran-mp-12   -pipe -Os -m32 -mmacosx-version-min=10.6 -J../mod -cpp -DGNU_COMPILER_ENABLED -DCFI_ENABLED -DOS_IS_DARWIN -DC_ENABLED -ffree-line-length-none -std=legacy -pthread -fopt-info-all=GFortranOptReport.txt -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdce -fdefer-pop -fdse -fforward-propagate -fguess-branch-probability -fif-conversion -fif-conversion2 -finline-functions-called-once -fipa-profile -fipa-pure-const -fipa-reference -fipa-reference-addressable -fmerge-constants -fmove-loop-invariants -fomit-frame-pointer -freorder-blocks -fshrink-wrap -fshrink-wrap-separate -fsplit-wide-types -fssa-backprop -fssa-phiopt -ftree-bit-ccp -ftree-ccp -ftree-ch -ftree-coalesce-vars -ftree-copy-prop -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-pta -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-sra -ftree-ter -funit-at-a-time -falign-functions -falign-jumps -falign-labels -falign-loops -fcaller-saves -fcode-hoisting -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads -finline-functions -finline-small-functions -findirect-inlining -fipa-bit-cp -fipa-cp -fipa-icf -fipa-ra -fipa-sra -fipa-vrp -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -freorder-blocks-algorithm=stc -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fsched-interblock -fsched-spec -fstore-merging -fstrict-aliasing -fthread-jumps -ftree-builtin-call-dce -ftree-pre -ftree-switch-conversion -ftree-tail-merge -ftree-vrp -fgcse-after-reload -fipa-cp-clone -floop-interchange -floop-unroll-and-jam -fpeel-loops -fpredictive-commoning -fsplit-paths -ftree-loop-distribute-patterns -ftree-loop-distribution -ftree-loop-vectorize -ftree-partial-pre -ftree-slp-vectorize -funswitch-loops -fvect-cost-model -fversion-loops-for-strides -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-1.5.1/src/kernel/DateTime_mod.f90 -o CMakeFiles/paramonte_c_darwin_ppc_gnu_release_static_stack.dir/DateTime_mod.f90.o

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.

Enhancement: Matlab Parallel Computing Toolbox Support?

I Have Paramonte running well via the Matlab interface, and also am seeing significant speedup when running Paramonte from a terminal using 'mpiexec'.

However, I also have a Matlab Parallel Computing Toolbox (PCT) licence, and this 'under the hood' does execute code on multiple Matlab sessions, using an implementation of MPI (e.g. https://uk.mathworks.com/help/matlab-parallel-server/use-different-mpi-builds-on-unix-systems.html).

It seems then that it should be possible to run Paramonte using the PCT on multiple Matlab sessions, rather than resorting to 'mpiexec' from a separate terminal maybe? Is this planned?

(I've also emailed Mathworks with a question about this, and will report back what they say...)

Regards,
Arwel

Delete the output files without closing matlab

See @fagheri's response for a potential fix to this problem.

Discussed in #30

Originally posted by Peku995 July 24, 2023
Hi,

I can't delete the output files because it is stated that the files are stille opened in matlab after the simulation finished. is it possible to delete the output files without closing matlab?

Thanks

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.

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/ParaMonte_mod@[email protected]', 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

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 openjournals/joss-reviews#2741

Broken link on installation page..

I'm trying to get hold of Matlab Paramonte for Linux. When I go the the installation page....

https://www.cdslab.org/paramonte/notes/installation/matlab/

..and click on the link for linux, it tries to open:
https://github.com/cdslaborg/paramonte/releases/latest/download/libparamonte_matlab_linux_x64.tar.gz

This is a broken link, and I've failed to find the correct one. In fact, just going to paramonte/releases seems to have links for the source code, but I can't find up to date Linux binaries anywhere! Where do the pre-bui;t binaries live now??

Restart functionality for complete simulations

Discussed in #32

For details, see the discussion by @Peku995 in the above link.

Originally posted by Peku995 August 3, 2023
I have an idea for the upcoming release: At the moment, it is not possible to use a completely finished simulation as a starting point to carry out further iterations from here (at least to my knowledge). At the moment, this is only possible for simulations that are not completely finished. I think it would improve the restart capabilities of Paramonte considerably if you could also start from simulations that have already ended and then simply save the whole thing under a different name.

Priors and Hyperpriors

Could we have a general discussion / examples of how one might implement priors and hyperpriors in the objective function somewhere in the documentation?

Defect: `Error: Arithmetic overflow converting REAL(8) to REAL(16)`

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/...):
gcc-13.2.0
The operating system (e.g., all/Windows/Linux/macOS/WSL1/WSL2/...):
macOS 10.6
The architecture (e.g., all/x86_x64/Intelx64/ARM/POWER9/...):
ppc
Describe the bug
See the log:

[ 23%] Building Fortran object obj/CMakeFiles/libparamonte.dir/pm_mathFactoring.F90.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/build/obj && /opt/local/bin/mpif90-mpich-gcc13 -DBLAS_ENABLED=0 -DCAF_ENABLED=0 -DCFI_ENABLED=0 -DCHECK_ENABLED=0 -DCK1_ENABLED=1 -DCK2_ENABLED=2 -DCK3_ENABLED=3 -DCPP_ENABLED=0 -DC_ENABLED=0 -DDARWIN_ENABLED=1 -DDLL_ENABLED=0 -DFORTRAN_ENABLED=1 -DGNU_ENABLED=1 -DGO_ENABLED=0 -DIK1_ENABLED=1 -DIK2_ENABLED=2 -DIK3_ENABLED=3 -DIK4_ENABLED=4 -DINTEL_ENABLED=0 -DJAVA_ENABLED=0 -DJULIA_ENABLED=0 -DLAPACK_ENABLED=0 -DLK1_ENABLED=1 -DLK2_ENABLED=2 -DLK3_ENABLED=3 -DLK4_ENABLED=4 -DMATHEMATICA_ENABLED=0 -DMATLAB_ENABLED=0 -DMEXPRINT_ENABLED=0 -DMPI_ENABLED=0 -DOMP_ENABLED=0 -DPDT_ENABLED=0 -DPURE=pure -DPYTHON_ENABLED=0 -DRK1_ENABLED=1 -DRK2_ENABLED=2 -DRK3_ENABLED=3 -DR_ENABLED=0 -DSK1_ENABLED=1  -mmacosx-version-min=10.6 -J../inc -cpp -save-temps=cwd -fstack-arrays -ffree-line-length-none -fimplicit-none -std=legacy -pthread -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdce -fdefer-pop -fdse -fforward-propagate -fguess-branch-probability -fif-conversion -fif-conversion2 -finline-functions-called-once -fipa-profile -fipa-pure-const -fipa-reference -fipa-reference-addressable -fmerge-constants -fmove-loop-invariants -fomit-frame-pointer -freorder-blocks -fshrink-wrap -fshrink-wrap-separate -fsplit-wide-types -fssa-backprop -fssa-phiopt -ftree-bit-ccp -ftree-ccp -ftree-ch -ftree-coalesce-vars -ftree-copy-prop -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-pta -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-sra -ftree-ter -funit-at-a-time -falign-functions -falign-jumps -falign-labels -falign-loops -fcaller-saves -fcode-hoisting -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads -finline-functions -finline-small-functions -findirect-inlining -fipa-bit-cp -fipa-cp -fipa-icf -fipa-ra -fipa-sra -fipa-vrp -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -freorder-blocks-algorithm=stc -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fsched-interblock -fsched-spec -fstore-merging -fstrict-aliasing -fthread-jumps -ftree-builtin-call-dce -ftree-pre -ftree-switch-conversion -ftree-tail-merge -ftree-vrp -fgcse-after-reload -fipa-cp-clone -floop-interchange -floop-unroll-and-jam -fpeel-loops -fpredictive-commoning -fsplit-paths -ftree-loop-distribute-patterns -ftree-loop-distribution -ftree-loop-vectorize -ftree-partial-pre -ftree-slp-vectorize -funswitch-loops -fvect-cost-model -fversion-loops-for-strides -cpp -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-2024.03.14/src/fortran/main/pm_mathFactoring.F90 -o CMakeFiles/libparamonte.dir/pm_mathFactoring.F90.o
/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_math_paramonte/paramonte/work/paramonte-2024.03.14/src/fortran/main/[email protected]:51:30:

   51 |         model%huge          = huge(mold)
      |                              1
Error: Arithmetic overflow converting REAL(8) to REAL(16) at (1). This check can be disabled with the option '-fno-range-check'
make[2]: *** [obj/CMakeFiles/libparamonte.dir/[email protected]] Error 1
make[2]: *** Waiting for unfinished jobs....

To Reproduce
Run the build on a given architecture (I think this has nothing to do with macOS as such).

Expected behavior
The code rather take into account 32-bit platforms.

Additional context
Version of paramonte used 2024.03.14
There was no such an error with 1.5.1.

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 openjournals/joss-reviews#2741

Intel runtime library downloads but fails to install

Discussed in #23

Originally posted by Peku995 June 22, 2023
Hi, I tried to install the runtime libray automatically via paramonte in Matlab, however, it does not work because it seems as if it would use a wrong path. I also tried to install the library via downloading and installation, which worked, but paramonte does not detect the installation.
What can I do to overcome this problem?

Based on this discussion, it appears that the library downloads the intel runtime library w_mpi-rt_p_2019.4.245.exe , from the project's release page, but fails to install the runtime library correctly. The origins of this issue need to be explored.
This runtime library should be optional for most use cases.

Optimal Acceptance Rate automation.

Discussed in #26

Originally posted by Peku995 July 10, 2023
Hi,

I was wondering what is a suitable acceptance rate for the sampler?
I read online for metropolis hastings it should be between 10% to 60%, but is there a recommendation for Paramonte?

Thanks

Peter

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.