Git Product home page Git Product logo

cdslaborg / paramonte Goto Github PK

View Code? Open in Web Editor NEW
240.0 11.0 30.0 48.68 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.23% Fortran 97.27% C 0.10% Batchfile 0.11% Python 1.32% MATLAB 0.01% HTML 0.02% C++ 0.10%
monte-carlo markov-chain adaptive-learning bayesian-inference bayesian-statistics machine-learning machine-learning-algorithms machine-learning-library sampling c

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

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

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 :)

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??

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.

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.

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.

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.

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.

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

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

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

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

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?

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.

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

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.

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

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!

[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

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

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.

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.