Skip to content

heyoka 2.0.0

Compare
Choose a tag to compare
@bluescarni bluescarni released this 22 Sep 07:20
· 941 commits to master since this release

NOTE: the major version number has been bumped from 1 to 2 because support for LLVM 10 has been dropped. However, there are no public API changes with respect to heyoka 1.0.0.

This new release of heyoka focuses on several LLVM-related improvements and fixes.

In-memory cache

heyoka now features an in-memory cache which avoids re-optimisation and re-compilation of code that was already optimised and compiled during program execution. See this tutorial for a detailed explanation and a couple of examples where this new feature leads to noticeable speedups.

Support for the SLP vectoriser

heyoka can now optionally take advantage of the LLVM SLP vectoriser. The vectoriser can be enabled via the boolean keyword argument kw::slp_vectorize (false by default), which can be passed to any heyoka function/class that uses JIT compilation (e.g., the Taylor adaptive integrators).

Although the SLP vectoriser can lead to noticeable speedups in the performance of JIT-compiled code, it is disabled by default because it can considerably increase the cost of JIT compilation.

Automatic vectorisation of math functions

On recent LLVM versions, heyoka has gained the ability to automatically vectorise scalar calls to math functions. This includes not only math functions implemented as LLVM builtins (e.g., sqrt, sin/cos, etc.), but also external math functions from the C++ math library.

This feature is automatically enabled on recent LLVM versions when SLP vectorisation is turned on and if heyoka was built with support for the SLEEF library.

LLVM 17 in, LLVM 10 out

This release drops support for LLVM 10 and enables support for the freshly-released LLVM 17.

New CR3BP model

An implementation of the circular restricted three-body problem has been added to the models module. The new model provides the non-dimensional equations of motion and the formula for the Jacobi constant.

Initial work on API docs

Initial work has started on detailed API docs. The WIP API reference is available here:

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

Fixes

  • A build issue in C++20 mode has been resolved.

As usual, the full changelog is available here:

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