Skip to content

heyoka.py 7.10.0

Choose a tag to compare

@bluescarni bluescarni released this 20 Mar 08:34

This latest heyoka.py release comes with several new features and improvements.

On-disk cache 💾

Debuting in this release, is the on-disk JIT compilation cache, complementing the existing in-memory cache.

The on-disk compilation cache persistently stores compiled LLVM modules on disk, so that repeated compilations of the same integrators, compiled functions, etc. across different program executions skip the expensive LLVM optimization and codegen steps entirely. Combined with the existing in-memory cache, this provides a two-level caching system that can dramatically reduce startup times for common workflows.

Please refer to the tutorial in order to understand how to work with the on-disk cache:

https://bluescarni.github.io/heyoka.py/notebooks/jit_caching.html

Improved support for combined sincos computations ⚡

When both sine and cosine of the same argument are needed, heyoka.py now automatically detects these pairs and fuses them into single sincos() calls, nearly halving the trigonometric computation cost. While this optimisation existed in previous versions for scalar computations, in this release it has been extended to support vectorized and quadruple/multiple-precision computations.

This optimization is applied transparently during expression decomposition and benefits both user-defined expressions and internal Kepler equation solvers.

Performance improvements 🏎️

  • Deep-copying Taylor integrators now results in shallow copies of the JIT-compiled code, resulting in improved performance and reduced memory usage.
  • A serious performance bottleneck resulting in excessively long compile times for large variational integrators has been removed.

Bugfixes 🐞

  • The fast_math compilation flag does not set the LLVM nnan and ninf flags any more. This should improve the behaviour of the Kepler solvers when fast_math is active.
  • The memory utilisation accounting for the in-memory cache was improved and made more accurate.
  • Additional measures have been taken in order to prevent accidental symbol collisions with other Python modules.
  • Fix build failure with pybind11 3.0.2.

As usual, the full changelog is available here:

https://bluescarni.github.io/heyoka.py/changelog.html