nested-fit 5.7.1.dev130__tar.gz → 5.8.0.dev133__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/CMakeLists.txt +13 -1
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/PKG-INFO +9 -2
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/README.md +6 -1
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/benchmarks_and_tests.ipynb +4 -3
- nested_fit-5.8.0.dev133/benchmarks_and_tests/benefit_per_step.py +103 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/gpu_performance_model.ipynb +1885 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/levers_matrix.py +141 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/levers_matrix_a4000_2026-10-30.md +42 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/levers_matrix_table.py +56 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/sweep.py +171 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/test_01_gauss_bg/nf_input.yaml +2 -2
- nested_fit-5.8.0.dev133/benchmarks_and_tests/test_12_gpu_crosscheck/README.txt +48 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/test_12_gpu_crosscheck/nf_input.yaml +31 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/test_12_gpu_crosscheck/out_points.csv +1000 -0
- nested_fit-5.8.0.dev133/benchmarks_and_tests/variations_gain.ipynb +1634 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/PKG-INFO +9 -2
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/SOURCES.txt +16 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/requires.txt +3 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/nested_run.py +21 -1
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pyproject.toml +6 -2
- nested_fit-5.8.0.dev133/src/Mod_gpu.f90 +162 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_likelihood.f90 +118 -2
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_options.f90 +14 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/funceval/auto_func.f90 +16 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/funceval/latex_parser.cpp +45 -0
- nested_fit-5.8.0.dev133/src/gpu/README.md +142 -0
- nested_fit-5.8.0.dev133/src/gpu/nf_device_lib.h +136 -0
- nested_fit-5.8.0.dev133/src/gpu/nf_device_lib_src.h.in +2 -0
- nested_fit-5.8.0.dev133/src/gpu/nf_gpu.cpp +367 -0
- nested_fit-5.8.0.dev133/src/gpu/nf_gpu.h +32 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/nested_fit.f90 +10 -1
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/.github/dependabot.yml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/.github/workflows/build_wheels.yml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/.gitignore +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/LICENSE +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/STEPBYSTEP_INSTALL.md +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/ThirdParty.md +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/test_01_gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/test_03_4gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/test_03_4gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/test_11_LJ17/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/cmake/resman.cmake +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/cmake/write_manifest.cmake +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/README.md +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK_NO_DB/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK_NO_DB/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK_SYN/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/RANDOM_WALK_SYN/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_hard_writing/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_input/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_input/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_no_points_file/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_no_points_file/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_no_stat/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/internal_func_no_stat/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/latex_func_input/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/latex_func_input/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/legacy_func_input/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/01_simple_example/legacy_func_input/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/02_error_bars_data/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/02_error_bars_data/eb_gauss_bg-x0_300-sigma_20-A_20000-p_to_bg_0.05-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/02_error_bars_data/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/DBSCAN-RANDOM_WALK_SYN/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/DBSCAN-RANDOM_WALK_SYN/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/DBSCAN-SLICE_SAMPLING/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/DBSCAN-SLICE_SAMPLING/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/KNN-RANDOM_WALK_SYN/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/KNN-RANDOM_WALK_SYN/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/KNN-SLICE_SAMPLING/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/KNN-SLICE_SAMPLING/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/agglomerative-RANDOM_WALK_SYN/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/agglomerative-RANDOM_WALK_SYN/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/agglomerative-SLICE_SAMPLING/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/agglomerative-SLICE_SAMPLING/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/mean-shift-RANDOM_WALK_SYN/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/mean-shift-RANDOM_WALK_SYN/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/mean-shift-SLICE_SAMPLING/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/03_with_cluster_analysis/mean-shift-SLICE_SAMPLING/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/latex_func_input/gauss_bg-x0_300-sigma_20-A_300-p_to_bg_20-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/latex_func_input/gauss_bg-x0_310-sigma_20-A_150-p_to_bg_10-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/latex_func_input/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/legacy_func_input/gauss_bg-x0_300-sigma_20-A_300-p_to_bg_20-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/legacy_func_input/gauss_bg-x0_310-sigma_20-A_150-p_to_bg_10-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/04_set_of_datafiles/legacy_func_input/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/05_data_2D/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/05_data_2D/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/05_data_2D/test_matrix.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/06_interpolation_function/ginterp.csv +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/06_interpolation_function/interp.csv +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/06_interpolation_function/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/data_analysis/06_interpolation_function/pynf_interp.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/function_integration/07_func_GAUSS/hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/function_integration/07_func_GAUSS/no_hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/function_integration/08_func_EGGBOX/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/.ipynb_checkpoints/pandas_extended_analysis-checkpoint.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/.ipynb_checkpoints/simple_analysis_visu-checkpoint.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/LJ17/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/LJ3/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/LJ7/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/LJ7_norm/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/exploring_potentials.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/pandas_extended_analysis.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/pynf_interp.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/quick_start_with_google_colab.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_1gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_1gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_2gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_2gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_3gauss_bg/.ipynb_checkpoints/he-histo-checkpoint.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_3gauss_bg/.ipynb_checkpoints/nf_input-checkpoint.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_3gauss_bg/.ipynb_checkpoints/nf_input-checkpoint.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_3gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_3gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_4gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/res_4gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/set_of_datafiles/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/set_of_datafiles/gauss_bg-x0_300-sigma_20-A_300-p_to_bg_20-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/set_of_datafiles/gauss_bg-x0_310-sigma_20-A_150-p_to_bg_10-bin_1.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/set_of_datafiles/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/set_of_files_analysis.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/simple_analysis_visu.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/jupyter_notebooks/simple_visualisation.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/native_functions/example.cpp +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/native_functions/example.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/09_ENERGY_HARM_3D/hard_writing/nf_energy.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/09_ENERGY_HARM_3D/hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/09_ENERGY_HARM_3D/no_hard_writing/nf_energy.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/09_ENERGY_HARM_3D/no_hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/10_Q_ENERGY_HARM_3D/hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/examples/potential_exploration/10_Q_ENERGY_HARM_3D/no_hard_writing/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/.DS_Store +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercices_ICFO/ICFO2024_nested_fit_tutorial.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercices_ICFO/res_1gauss_bg/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercices_ICFO/res_1gauss_bg/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/exercises_quantitative_xray_spectroscopy.ipynb +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/with_U_1000_counts/c_U_1000_counts.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/with_U_100s/c_U_100s.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/with_U_1s/c_U_1s.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/with_U_1s/nf_input.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/without_U_100k_counts/s_U_100000_counts.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/without_U_1M_counts/nf_input.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/exercises_QXRA/without_U_1M_counts/s_U_1000000_counts.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise1_piN_sampling/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise1_piN_sampling/nf_input.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise1_piN_sampling/piN-sum.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise2_pN_evidence/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise2_pN_evidence/nf_input.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise2_pN_evidence/piN-sum.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise2_pN_evidence/results_2000lp.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise3_He-like_U_from_scratch/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise3_He-like_U_from_scratch/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise4_He-like_U_clusters/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise4_He-like_U_clusters/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise4_He-like_U_clusters/nf_input.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise5_He-like_U_search_and_clusters_methods/README.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/exercises/old_exercices/exercise5_He-like_U_search_and_clusters_methods/he-histo.dat +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/install.sh +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/dependency_links.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/entry_points.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nested_fit.egg-info/top_level.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/nf_input.yaml +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/__init__.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/cliw.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/evaluator.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/metadata.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/nested_res.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/utils.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/__init__.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/bar.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/errorui.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/hfinder.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/plot.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/timer.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/pynested_fit/widgets/var.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/setup.cfg +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/setup.py +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/curfit.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpback.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpbspl.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpchec.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpcurf.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpdisc.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpgivs.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fpknot.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fprati.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/fprota.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/DIERCKX/splev.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Makefile +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_array_tries.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_cluster_analysis.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_covariance_matrix.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_input_parse.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_integrated_func.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_interpolate.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_jsonio.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_likelihood_gen.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_logger.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_math.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_metadata.f90.in +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_parameters.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_perfprof.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_potentials.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_search_new_point.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_timestamp.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/Mod_userfcn.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/dpsort.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/fdump.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/i1mach.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/j4save.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xercnt.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xerhlt.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xermsg.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xerprn.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xersve.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/SLATEC/xgetua.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/USERFCN.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/USERFCN_2D.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/USERFCN_SET.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/cli/argparse.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/funceval/native_parser.cpp +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/functions/WOFZ.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/functions/internal.tex +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/functions/internal_funcs.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/console.cpp +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/halt.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/hash.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/int_stack.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/resman.cpp.in +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/rmhex.cpp +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/strutil.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/helper/utils.cpp +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/init_interpolation.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/nested_sampling.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/rinteg.f +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/src/shirley_fitpack.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/test/CMakeLists.txt +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/test/README.md +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/test/str.f90 +0 -0
- {nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/test/test.f90 +0 -0
|
@@ -122,6 +122,7 @@ set(SRC_FILES_COMM
|
|
|
122
122
|
src/Mod_userfcn.f90
|
|
123
123
|
|
|
124
124
|
src/Mod_logger.f90
|
|
125
|
+
src/Mod_gpu.f90
|
|
125
126
|
|
|
126
127
|
src/Mod_perfprof.f90
|
|
127
128
|
|
|
@@ -296,7 +297,18 @@ if(LAPACK)
|
|
|
296
297
|
endif()
|
|
297
298
|
endif()
|
|
298
299
|
|
|
299
|
-
|
|
300
|
+
# GPU likelihood backend: plain C++, loads libcuda/libnvrtc with dlopen at run time.
|
|
301
|
+
# Builds everywhere; a no-op where there is no driver. See src/gpu/nf_gpu.h.
|
|
302
|
+
# Static: the binary stays a single file, so packaging and pynested_fit are unchanged.
|
|
303
|
+
add_library(nf_gpu STATIC src/gpu/nf_gpu.cpp)
|
|
304
|
+
file(READ ${CMAKE_SOURCE_DIR}/src/gpu/nf_device_lib.h NF_DEVICE_LIB_SRC)
|
|
305
|
+
configure_file(${CMAKE_SOURCE_DIR}/src/gpu/nf_device_lib_src.h.in ${CMAKE_BINARY_DIR}/gpu/nf_device_lib_src.h @ONLY)
|
|
306
|
+
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/src/gpu/nf_device_lib.h)
|
|
307
|
+
target_include_directories(nf_gpu PRIVATE ${CMAKE_BINARY_DIR}/gpu)
|
|
308
|
+
set_target_properties(nf_gpu PROPERTIES CXX_STANDARD 17 POSITION_INDEPENDENT_CODE ON)
|
|
309
|
+
target_link_libraries(nf_gpu PRIVATE dl)
|
|
310
|
+
|
|
311
|
+
target_link_libraries(${nested_fit_target} PUBLIC dl nf_gpu)
|
|
300
312
|
target_link_libraries(${nested_fit_target} PRIVATE TracyClient)
|
|
301
313
|
target_include_directories(${nested_fit_target} PRIVATE ${tracy_SOURCE_DIR})
|
|
302
314
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nested_fit
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.8.0.dev133
|
|
4
4
|
Summary: The nested_fit package.
|
|
5
5
|
Author: Martino Trassinelli, Lune Maillard, César Godinho
|
|
6
6
|
Project-URL: Homepage, https://github.com/martinit18/nested_fit
|
|
@@ -21,6 +21,8 @@ Requires-Dist: plotly
|
|
|
21
21
|
Requires-Dist: psutil
|
|
22
22
|
Requires-Dist: anesthetic
|
|
23
23
|
Requires-Dist: plotext
|
|
24
|
+
Provides-Extra: cuda
|
|
25
|
+
Requires-Dist: nvidia-cuda-nvrtc-cu12; extra == "cuda"
|
|
24
26
|
Dynamic: license-file
|
|
25
27
|
|
|
26
28
|
# NESTED FIT
|
|
@@ -80,6 +82,11 @@ pipx install nested_fit
|
|
|
80
82
|
```
|
|
81
83
|
(If you need to install a beta version from the **nightly** branch, use the command `pip install --pre nested_fit`)
|
|
82
84
|
|
|
85
|
+
With an NVIDIA GPU, `pipx install "nested_fit[cuda]"` adds the runtime compiler the GPU backend
|
|
86
|
+
needs; the driver is the only other requirement, no CUDA toolkit. The likelihood then runs on
|
|
87
|
+
the GPU when that is faster than the CPU threads together, and on the CPU otherwise, with one
|
|
88
|
+
log line saying which. Details and controls in `src/gpu/README.md`.
|
|
89
|
+
|
|
83
90
|
The `examples/` directory is bundled with the package. After installation you can
|
|
84
91
|
copy it to a local working area in a couple of ways:
|
|
85
92
|
|
|
@@ -446,7 +453,7 @@ Examples of use of a legacy function can be found in `examples/data_analysis/aaa
|
|
|
446
453
|
|
|
447
454
|
## Present version and history of the past versions
|
|
448
455
|
|
|
449
|
-
The present version is 5.
|
|
456
|
+
The present version is 5.8.0\
|
|
450
457
|
New features:
|
|
451
458
|
- Asynchronous parallel search of new points: each thread adds its new point to the main loop without waiting for the search of the other threads.
|
|
452
459
|
This strongly improves the parallel efficiency when the search time of new points is very variable (e.g. Lennard-Jones clusters)
|
|
@@ -55,6 +55,11 @@ pipx install nested_fit
|
|
|
55
55
|
```
|
|
56
56
|
(If you need to install a beta version from the **nightly** branch, use the command `pip install --pre nested_fit`)
|
|
57
57
|
|
|
58
|
+
With an NVIDIA GPU, `pipx install "nested_fit[cuda]"` adds the runtime compiler the GPU backend
|
|
59
|
+
needs; the driver is the only other requirement, no CUDA toolkit. The likelihood then runs on
|
|
60
|
+
the GPU when that is faster than the CPU threads together, and on the CPU otherwise, with one
|
|
61
|
+
log line saying which. Details and controls in `src/gpu/README.md`.
|
|
62
|
+
|
|
58
63
|
The `examples/` directory is bundled with the package. After installation you can
|
|
59
64
|
copy it to a local working area in a couple of ways:
|
|
60
65
|
|
|
@@ -421,7 +426,7 @@ Examples of use of a legacy function can be found in `examples/data_analysis/aaa
|
|
|
421
426
|
|
|
422
427
|
## Present version and history of the past versions
|
|
423
428
|
|
|
424
|
-
The present version is 5.
|
|
429
|
+
The present version is 5.8.0\
|
|
425
430
|
New features:
|
|
426
431
|
- Asynchronous parallel search of new points: each thread adds its new point to the main loop without waiting for the search of the other threads.
|
|
427
432
|
This strongly improves the parallel efficiency when the search time of new points is very variable (e.g. Lennard-Jones clusters)
|
{nested_fit-5.7.1.dev130 → nested_fit-5.8.0.dev133}/benchmarks_and_tests/benchmarks_and_tests.ipynb
RENAMED
|
@@ -192,11 +192,11 @@
|
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
"cell_type": "code",
|
|
195
|
-
"execution_count":
|
|
195
|
+
"execution_count": null,
|
|
196
196
|
"metadata": {},
|
|
197
197
|
"outputs": [],
|
|
198
198
|
"source": [
|
|
199
|
-
"K =
|
|
199
|
+
"K = 1000"
|
|
200
200
|
]
|
|
201
201
|
},
|
|
202
202
|
{
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
},
|
|
220
220
|
{
|
|
221
221
|
"cell_type": "code",
|
|
222
|
-
"execution_count":
|
|
222
|
+
"execution_count": null,
|
|
223
223
|
"metadata": {},
|
|
224
224
|
"outputs": [],
|
|
225
225
|
"source": [
|
|
@@ -238,6 +238,7 @@
|
|
|
238
238
|
" },\n",
|
|
239
239
|
" data={'xmin': 1, 'xmax': 1024}, # Boundaries of data\n",
|
|
240
240
|
" livepoints=K, # Number of live points\n",
|
|
241
|
+
" num_tries=10, \n",
|
|
241
242
|
" search_method='SLICE_SAMPLING', # Search method\n",
|
|
242
243
|
" search_params=(0.5, 3), # Parameters of chosen method\n",
|
|
243
244
|
" search_maxsteps=100000, # Max steps of nested sampling\n",
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""The benefit of each proposed step, quantified from the matrix and the dedicated runs.
|
|
3
|
+
|
|
4
|
+
python benefit_per_step.py matrix.tsv
|
|
5
|
+
|
|
6
|
+
Prints (1) the suite: per lever, median and best speed-up over the git version and the evidence
|
|
7
|
+
agreement; (2) Gonçalo's case: the stacked steps from the git version on his cores to the full
|
|
8
|
+
configuration on his A4000, with the time of one full run (570 000 steps, 2.9e8 evaluations)."""
|
|
9
|
+
import math
|
|
10
|
+
import re
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
FULL_RUN_EVALS = 2.9e8 # 570 000 steps x ~510 calls per step, from the converged K=200 run (114 nats)
|
|
16
|
+
SINGLE_PHASE = 0.29 # fraction of the steps before the precision switch (step 6 000-6 600 of 22 800)
|
|
17
|
+
CPU48 = 100.0 # his 48 cores, evaluations per second (0.5 s per call per core, perfect scaling)
|
|
18
|
+
WINGS_MIXED = 954.0 # per-term rate with the asymptotic Faddeeva series in the wings (A4000, 8 threads, 4 Nov.)
|
|
19
|
+
|
|
20
|
+
d = pd.read_csv(sys.argv[1], sep="\t", dtype=str)
|
|
21
|
+
for c in ("wall_s", "logZ", "uncert", "calls", "steps"):
|
|
22
|
+
d[c] = pd.to_numeric(d[c], errors="coerce")
|
|
23
|
+
|
|
24
|
+
print("## The suite (every example of the repository), one run per cell, against nightly 5.7.1\n")
|
|
25
|
+
print("| step | cases | median speed-up | best | evidence within 1.5 σ (pairs with both) | runs without evidence |")
|
|
26
|
+
print("|---|---|---|---|---|---|")
|
|
27
|
+
for l in ["branch-cpu", "auto", "gpu", "width1", "gpu+width1", "gpu+adaptive", "gpu+mixed", "gpu+split2", "gpu+all"]:
|
|
28
|
+
gains, agree, pairs, noz, n = [], 0, 0, 0, 0
|
|
29
|
+
for case, g in d.groupby("case", sort=False):
|
|
30
|
+
if case.startswith("/"):
|
|
31
|
+
continue
|
|
32
|
+
b = g[g.lever == "baseline"]; r = g[g.lever == l]
|
|
33
|
+
if b.empty or r.empty:
|
|
34
|
+
continue
|
|
35
|
+
b, r = b.iloc[0], r.iloc[0]
|
|
36
|
+
if str(r.exit) != "0" or not (r.wall_s > 0):
|
|
37
|
+
continue
|
|
38
|
+
n += 1; gains.append(b.wall_s / r.wall_s)
|
|
39
|
+
if math.isnan(r.logZ):
|
|
40
|
+
noz += 1
|
|
41
|
+
elif not math.isnan(b.logZ):
|
|
42
|
+
pairs += 1; agree += abs(r.logZ - b.logZ) / (math.hypot(b.uncert or 0, r.uncert or 0) or 1) <= 1.5
|
|
43
|
+
if gains:
|
|
44
|
+
gains.sort(); print(f"| {l} | {n} | {gains[len(gains)//2]:.2f}× | {gains[-1]:.2f}× | {agree} / {pairs} | {noz} |")
|
|
45
|
+
|
|
46
|
+
g = d[d.case.str.startswith("/")]
|
|
47
|
+
if not g.empty:
|
|
48
|
+
print("\n## Gonçalo's case on the A4000 box (K = 200, 8 threads, 300 steps or a 2 400 s cap)\n")
|
|
49
|
+
print("| step | steps | wall (s) | s per step | evaluations / s on the device |")
|
|
50
|
+
print("|---|---|---|---|---|")
|
|
51
|
+
for _, r in g.iterrows():
|
|
52
|
+
m = re.search(r"(\d+) likelihood evaluations", str(r.gpu))
|
|
53
|
+
rate = f"{int(m.group(1)) / r.wall_s:.0f}" if m and r.wall_s > 0 else "CPU"
|
|
54
|
+
if str(r.exit) == "124": # timed out; the step counter prints every 100 steps, so steps is a floor
|
|
55
|
+
print(f"| {r.lever} | {r.steps:.0f}-{r.steps + 99:.0f} (timeout) | {r.wall_s:.0f} | {r.wall_s / (r.steps + 99):.0f}-{r.wall_s / r.steps:.0f} | {rate} |")
|
|
56
|
+
else:
|
|
57
|
+
print(f"| {r.lever} | {r.steps:.0f} | {r.wall_s:.0f} | {r.wall_s / r.steps:.1f} | {rate} |")
|
|
58
|
+
|
|
59
|
+
def device_rate(lever):
|
|
60
|
+
# the runner keeps the first 1 000 characters of the log lines; when the stats line is cut
|
|
61
|
+
# (adaptive runs log more), the evaluation count is the median of the other GPU rows
|
|
62
|
+
r = g[g.lever == lever].iloc[0]
|
|
63
|
+
m = re.search(r"(\d+) likelihood evaluations", str(r.gpu))
|
|
64
|
+
counts = [int(x) for x in g.gpu.astype(str).str.extract(r"(\d+) likelihood evaluations")[0].dropna()]
|
|
65
|
+
n = int(m.group(1)) if m else int(sorted(counts)[len(counts) // 2])
|
|
66
|
+
return n / r.wall_s, n
|
|
67
|
+
|
|
68
|
+
if not g.empty:
|
|
69
|
+
# measured on the A4000 box: calls per step with width 1, device rates per precision
|
|
70
|
+
_, n_gpu = device_rate("gpu"); _, n_w1 = device_rate("gpu+width1")
|
|
71
|
+
W1 = n_gpu / n_w1
|
|
72
|
+
R_DOUBLE_8, _ = device_rate("gpu") # 8 GPU threads
|
|
73
|
+
R_DOUBLE_2, _ = device_rate("gpu+split2") # 2 GPU threads: the A4000 serves 2 streams better than 8
|
|
74
|
+
R_SINGLE, _ = device_rate("gpu+adaptive")
|
|
75
|
+
R_MIXED, _ = device_rate("gpu+mixed")
|
|
76
|
+
else:
|
|
77
|
+
W1, R_DOUBLE_8, R_DOUBLE_2, R_SINGLE, R_MIXED = 1.4, 83, 108, 2400, 789
|
|
78
|
+
EV = FULL_RUN_EVALS / W1
|
|
79
|
+
|
|
80
|
+
print("\n## Gonçalo's full run, stacked (rates measured in the sampler on the A4000 box, evaluations per second)\n")
|
|
81
|
+
steps = [
|
|
82
|
+
("git version on his 48 cores", FULL_RUN_EVALS, CPU48, None),
|
|
83
|
+
(f"+ slice width 1 ({W1:.2f}× fewer calls, measured on his model)", EV, CPU48, None),
|
|
84
|
+
(f"+ his A4000 alone, double, 8 GPU threads ({R_DOUBLE_8:.0f}/s: the card equals the cores)", EV, R_DOUBLE_8, None),
|
|
85
|
+
(f"+ 2 GPU threads and the 46 other cores on the CPU ({R_DOUBLE_2:.0f} + {CPU48:.0f}/s)", EV, R_DOUBLE_2 + CPU48, None),
|
|
86
|
+
(f"+ adaptive precision: single for the first {SINGLE_PHASE:.0%} of the steps ({R_SINGLE:.0f}/s)", EV, (R_SINGLE, R_DOUBLE_2 + CPU48), SINGLE_PHASE),
|
|
87
|
+
(f"+ per-term precision in the tail ({R_MIXED:.0f}/s, 8 GPU threads, + the cores)", EV, (R_SINGLE, R_MIXED + CPU48), SINGLE_PHASE),
|
|
88
|
+
]
|
|
89
|
+
print("| configuration | rate (evals / s) | one full run | gain over the git version |")
|
|
90
|
+
print("|---|---|---|---|")
|
|
91
|
+
t0 = None
|
|
92
|
+
for name, ev, rate, frac in steps:
|
|
93
|
+
if frac is None:
|
|
94
|
+
t = ev / rate; rtxt = f"{rate:.0f}"
|
|
95
|
+
else:
|
|
96
|
+
t = ev * (frac / rate[0] + (1 - frac) / rate[1]); rtxt = f"{rate[0]:.0f} then {rate[1]:.0f}"
|
|
97
|
+
t0 = t0 or t
|
|
98
|
+
print(f"| {name} | {rtxt} | {t/86400:.1f} days | {t0/t:.1f}× |")
|
|
99
|
+
print(f"\nWithout a single phase (the switch tripped at step 100 in the converged run): "
|
|
100
|
+
f"{EV / (R_MIXED + CPU48) / 86400:.1f} days, {FULL_RUN_EVALS / CPU48 / (EV / (R_MIXED + CPU48)):.1f}×.")
|
|
101
|
+
print(f"With the wing series in the per-term tail ({WINGS_MIXED:.0f}/s, 1.21× in the sampler): "
|
|
102
|
+
f"{EV / (WINGS_MIXED + CPU48) / 86400:.1f} days without a single phase ({FULL_RUN_EVALS / CPU48 / (EV / (WINGS_MIXED + CPU48)):.1f}×), "
|
|
103
|
+
f"{EV * (SINGLE_PHASE / R_SINGLE + (1 - SINGLE_PHASE) / (WINGS_MIXED + CPU48)) / 86400:.1f} days with one.")
|