Skip to content

Heat 1.6.0 - More Decompositions, Larger Buffers and Apple MPS Support

Latest
Compare
Choose a tag to compare
@JuanPedroGHM JuanPedroGHM released this 03 Sep 11:35
· 1 commit to stable since this release
83727cb

Heat 1.6.0 Release Notes


Overview

With Heat 1.6.0 we release the next major set of features, including continued developments within the ESAPCA project funded by the European Space Agency (ESA).

The main focus of this release is a significant expansion of our distributed linear algebra capabilities, including full SVD, symmetric eigenvalue decomposition, and polar decomposition, all leveraging the efficient "Zolotarev approach". We also introduce Dynamic Mode Decomposition (DMD and DMDc) for the analysis of complex systems.

On the performance side, the MPI communication layer has been enhanced to support buffer sizes exceeding the previous 2³¹-1 element limit, enabling data transfers at an unprecedented scale.

This release also introduces support for the Zarr data format for I/O operations and experimental hardware acceleration on Apple Silicon via Metal Performance Shaders (MPS). Finally, the project's build system has been modernized to use pyproject.toml, improving its maintainability and alignment with current Python packaging standards.

With this release, Heat drops support for Python 3.9, now requiring Python 3.10 or newer, and extends compatibility to include PyTorch versions up to 2.7.x.

We are grateful to our community of users, students, open-source contributors, the European Space Agency, and the Helmholtz Association for their support and feedback.

Highlights

  • [ESAPCA] Symmetric Eigenvalue Decomposition (ht.linalg.eigh) and full SVD (ht.linalg.svd) via Zolotarev Polar Decomposition (by @mrfh92)
  • [ESAPCA] Dynamic Mode Decomposition with and without control: ht.decomposition.DMD, ht.decomposition.DMDc (by @mrfh92)
  • Support for communicating MPI buffers larger than 2³¹-1 elements (by @JuanPedroGHM)
  • I/O support for the Zarr data format: ht.load_zarr, ht.save_zarr (by @Berkant03)
  • Expanded QR decomposition for non tall-skinny matrices (by @mrfh92)
  • Support for Apple MPS hardware acceleration (by @ClaudiaComito)
  • Strided 1D convolution (by @lolacaro)

Linear Algebra & Decomposition

#1538 New decomposition module and PCA interface (by @mrfh92)
#1561 Distributed randomized SVD (by @mrfh92)
#1629 Incremental SVD/PCA (by @mrfh92)
#1639 Dynamic Mode Decomposition (DMD) (by @mrfh92)
#1744 QR decomposition for non tall-skinny matrices and split=0 (by @mrfh92)
#1697 Polar decomposition (by @mrfh92)
#1794 Dynamic Mode Decomposition with Control (DMDc) (by @mrfh92)
#1824 Symmetric Eigenvalue Decomposition (ht.linalg.eigh) and full SVD (ht.linalg.svd) based on Zolotarev Polar Decomposition (by @mrfh92)

Signal Processing

#1865 Add stride argument for ht.signal.convolve (by @lolacaro)

I/O

#1753 Added slice argument for ht.load_hdf5 (by @JuanPedroGHM)
#1766 Support for the zarr data format (by @Berkant03)

Core & MPI

#1765 Large data counts support for MPI Communication (by @JuanPedroGHM)

Other New Features

#1129 Support Apple MPS acceleration (by @ClaudiaComito)
#1773 ht.eq, ht.ne now allow non-array operands (by @Marc-Jindra)
#1888 Expand NumPy functions to DNDarrays (by @mtar)
#1895 Extends torch functions to DNDarrays (by @mtar)

Bug Fixes

#1646 Raise Error for batched vector inputs on ht.linalg.matmul (by @FOsterfeld)
#993 Fixed precision loss in several functions when dtype is float64 (by @neosunhan)
#1756 Fix printing of non-distributed data (by @ClaudiaComito)
#1831 Remove unnecessary contiguous() calls (by @Marc-Jindra)
#1893 Bug-fixes during ESAPCA benchmarking (by @mrfh92)
#1880 Exit installation if conda environment cannot be activated (by @thawn)
#1905 Resolve bug in rSVD / wrong citation in polar.py (by @mrfh92)
#1921 Fix IO test failures with Zarr v3.0.9 in ht.save_zarr() (by @LScheib)

Interoperability & Build System

#1826 Make unit tests compatible with NumPy 2.x (by @Marc-Jindra)
#1832 Transition to pyproject.toml, Ruff, and mypy (by @JuanPedroGHM)

Contributors

@Berkant03, @ClaudiaComito, @FOsterfeld, @joernhees, @jolemse, @JuanPedroGHM, @lolacaro, @LScheib, @Marc-Jindra, @mrfh92, @mtar, @neosunhan, and @thawn.

Acknowledgements and Disclaimer

The SVD, PCA, and DMD functionalities were funded by the European Space Agency (ESA) under the ESAPCA programme.

This work is partially carried out under a programme of, and funded by, the European Space Agency. Any view expressed in this repository or related publications can in no way be taken to reflect the official opinion of the European Space Agency.