helios
helios copied to clipboard
Data-Analytics compilation mode
Problem Certain debug operations, implementation of new features, understanding and maintenance of current functionalities, insight analysis and performance profiling with respect to different variables could benefit a lot from getting internal HELIOS++ data. At the moment, it is up to the dev to inject code modifications to extract certain measurements which are currently not exported.
Solution Add a new compilation mode to HELIOS++ so, when compiled this way, it exports data of interest for deep analysis of what is going on behind the simulation. At the moment this is available for certain components such as the BUDDING_METRICS mode. But a more wide spectrum compilation mode for general data will be more useful. It is recommended to implement this as a compilation mode so data analytics related code will not be inserted in normal mode, thus avoiding messing up with performance.
Caveat This compilation mode must not be confused with typical profiling. For such needs already existing tools such as flame graphs, callgrind, massif, gprof, etc. already exist. It must be understood as a way to facilitate analysis of HELIOS++ internals, not as a general purpose tool for memory profiling nor computational profiling.
Measurements/Plots
- [ ] Platform position, speed and acceleration with respect to time/simstep (x(t), dxdt, d2xdt2)
- [ ] Platform angles (roll, pitch and yaw) and their derivatives with respect to time/simstep
- [ ] Deflector angle and its derivatives with respect to time/simstep
- [ ] Number of pulses filtered over time by: range, hit distance
- [ ] Number of rays that miss, continue and intersect over time/simstep
- [ ] Number of rays that either continue or intersect over time/simstep depending on detailed voxel mode
- [ ] Number of fullwaves discarded at initialization over time/simstep
- [ ] Number of reflections discarded over time/simstep by distance (when populating fullwave)
- [ ] How many times the maximum number of returns per pulse has been reached
- [ ] Histogram of reflection intensities
- [ ] Histogram of ray hit distances
- [ ] Histograms of incidence angle and radius at intensity computation (subray handling)
- [ ] Aggregate full wave histogram
- [ ] KDTree topology (root red, internal green, leaf blue)
- [ ] Leg end on time/simstep
- [x] JSON with requested execution configuration/state
On Windows, there is an issue with the file separators, i.e., data-analytic files are saved in the HELIOS++ root folder with names like helios_pulse_records92subray_sim.csv
instead of in a helios_pulse_records
subfolder.
- [ ] Fix separator for directories so it works on Window
- [ ] If it is not too complicated, add an option to store the outputs in subfolders named after the
survey_name
+ timestamp to avoid overwriting when running multiple surveys consecutively