Skip to content

CyRK v0.8.0

Compare
Choose a tag to compare
@jrenaud90 jrenaud90 released this 06 Sep 19:54
· 208 commits to main since this release
148fba1

Changes

New Features

  • Added new interp functions that work with c pointers. These can only be cimported.
  • Added new "CyRK.cy.common.pyx" file for functions that are used by both cyrk_ode and CySolver.
    • Moved interpolation functionality into CyRK.cy.common. Restructured cyrk_ode and CySolver to use this new function for interpolations.

Changes:

  • Refactored many CySolver internal attributes to reflect to change from memoryviews to pointers. The most important ones for the user are:
    • CySolver.y_new_view -> CySolver.y_ptr
    • CySolver.dy_new_view -> CySolver.dy_ptr
    • CySolver.t_new -> CySolver.t_now
    • CySolver.arg_array_view -> CySolver.args_ptr
  • Changed RK constants back to c arrays initialized with PyMem_Malloc. The memory for these arrays are setup in the cython-based solvers. Afterwards, there are helper functions in CyRK.rk to populate the arrays with correct values.
  • Moved to a more generalized scheme for compiling cython files. See "cython_extensions.json", "_build_cyrk.py", and "setup.py" for details.

Performance

  • Transitioned many arrays from numpy to c arrays allocated with PyMem_Malloc, etc. These changes led to a significant performance boost for cython-based solvers.
  • Copied some performance lessons that were learned from the cython-based solvers to the numba-based nbrk_ode.

GitHub Tracked Changes

Full Changelog: v0.7.1...v0.8.0