Skip to content

heyoka 6.0.0

Compare
Choose a tag to compare
@bluescarni bluescarni released this 21 Sep 07:39
· 38 commits to master since this release

Improved support for mega-kernels ⚡

The main focus of this new heyoka release is improved support for very large computational graphs in both Taylor integrators and compiled functions. Specifically:

  • when compact_mode is active, heyoka now splits the LLVM IR code in multiple modules rather than keeping it all in a single module - this leads to noticeable improvements in compilation time;
  • the new parjit boolean flag (that can optionally be passed to the constructors of Taylor integrators and compiled functions) can be used to enable parallel compilation in compact_mode - this can lead to dramatically-reduced compilation times on multicore machines;
  • it is now possible to pass the desired LLVM code model to the constructors of Taylor integrators and compiled functions. By default, the small code model is used, but very large computational graphs (which would error out in previous heyoka versions) might require the large model.

Warning

Due to several LLVM issues around parallel JIT compilation discovered during this latest heyoka development cycle, the parjit flag is currently off by default on Unix platforms and completely disabled on Windows. Turning on parjit on Unix platforms is considered safe but can very rarely result in a runtime exception being thrown. See the "known issues" page for more details:

https://bluescarni.github.io/heyoka/known_issues.html

We expect the parjit feature to become more stable in later LLVM releases, at which point it will be turned on by default.

Improvements to the integrator API 🔨

  • It is now possible to initialise a Taylor integrator without providing a set of initial conditions - this will result in a zeroed-out initial state vector.
  • The integrator constructor will now error out if a non-empty array of parameter values with the incorrect size is specified. If an empty array of parameter values is passed on construction, the parameter values in the integrator will be zero-inited.

pow() improvements 💥

Exponentiations with non-numerical exponents are now supported in the right-hand side of ODEs.

Update on supported LLVM versions 🔁

The minimum supported LLVM version is now 15. This release also adds support for the recently-released LLVM 19.

Miscellanea

  • Fix build system warnings when using recent versions of CMake and Boost.
  • Fix compilation on FreeBSD.
  • Enable support for fmt 11.

As usual, the full changelog is available here:

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