ADIOS2 repo has been updated for sobol’ indices computation. For the time being, we cache all the numpy arrays received from independent writers and then stack them together before sobol computations.
I have noticed a few changes in stats.
Result comparisons
First of all, I compare the runs from both ZMQ (develop branch) and the current adios2-newapi branch.
I compute L2 norms for all results generated for the timestep 0 for each file i.e STUDY_OUT/results/*.001
.
(melissa) apurandare@gros-121:~/MELISSA/tests/data$ python3 l2norm.py $RESULTS_DIR ~/.cache/ZMQ_RESULTS/sobol
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_variance.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_variance.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_sobol_tot0.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_sobol_tot0.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_mean.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_mean.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_sobol0.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_sobol0.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_kurtosis.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_kurtosis.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_sobol1.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_sobol1.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_sobol_tot1.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_sobol_tot1.001
L2 norm: 0.000e+00
====================================================================================================
====================================================================================================
File1: /home/apurandare/MELISSA/examples/heat-pde/heat-pde-sa/STUDY_OUT/results/results.temperature_skewness.001
File2: /home/apurandare/.cache/ZMQ_RESULTS/sobol/results.temperature_skewness.001
L2 norm: 1.234e-15
====================================================================================================
Pytest
Pytest for tests/server/test_sensitivity_analysis_server.py
has a following assertion after computing sobol stats
assert (
abs(server.melissa_moments["field"][0][0].get_variance() - variance) / variance
< 1e-3
)
that is producing higher values as follows
>>> np.array([8.57702183e+18]) / 4.474760921668681e+21
array([0.00191676])
Is the difference in skewness acceptable and can we increase the assertion margin for the pytest from 1e-3 to 2e-3 ?
Let me know your thoughts.
P.S: Non-sobol results have no floating point differences.