Goobley/Lightweaver: Performance Focused Improvements

Cmo; Asensio Ramos, Andrés
Bibliographical reference

Zenodo

Advertised on:
5
2022
Description
The v0.8 release of Lightweaver focuses significantly on performance enhancements in the backend, with some improved frontend flexibility regarding the printing of results. If you've been using a v0.8.0rc* version then you will already have most/all of these features. Notable features: Manual SIMD (x86_64) vectorisation throughout the opacity/emissivity gathering process and calculation of the radiative Gamma matrix. This can be a >50% performance uplift on iterative schemes depending on available instruction sets. (SSE2 seems fully supported on Apple M1, thanks J. Jenkins for testing) Reduced multithreading overhead. Assured data over-alignment where possible. Optimised interpolation schemes and parallelisation of PRD/hPRD scattering integral calculations. Ability to override the iteration scheme with dynamic libraries, similar to the formal solver. Added IterationUpdate class, returning a lot more information about the updates going on in the backend. (This also ties in with the ability to override the iteration scheme -- consider how a GS method works :eyes:) Finally added default function to iterate context to statistical equilibrium convergence. See lw.iterate_ctx_se Added a benchmark and config file system to select the optimal SIMD implementation for the current machine. Home folder config can be overriden with a lightweaverrc in the folder where a script is run. Minor documentation improvements.