Skip to content

Releases: NVIDIA/torch-harmonics

v0.9.0

16 Apr 12:15

Choose a tag to compare

  • New CPU backend (OpenMP-accelerated) for both DISCO convolution and attention layers
  • Pre-compiled manylinux wheels for multiple PyTorch and CUDA versions, available on PyPI and pypi.nvidia.com
  • Revised truncation logic for the SHT: centralized in new truncation.py module, enforcing triangular truncation (lmax = min(lmax, mmax)) across all SHT classes. Note: truncation for equiangular/equidistant grids changed from nlat to (nlat+1)//2
  • SHT performance improvements: contraction dimensions are now transposed to be stride-1 before einsum, and real/imaginary parts are split into separate contiguous tensors
  • New fft.py wrapper module with proper Hermitian symmetry enforcement in irfft and explicit mode truncation in rfft
  • Full PyTorch 2 custom operator compatibility for DISCO and attention layers using torch.library registration, enabling torch.compile and torch.export
  • Restructured DISCO convolution and attention code into proper subpackages (torch_harmonics/disco/, torch_harmonics/attention/)
  • Added double precision support for DISCO convolution
  • Fixed Schmidt normalization for derivatives of associated Legendre polynomials
  • Fixed up/downsampling in attention layers when input and output shapes differ
  • Fixed GaussianRandomFieldS2 to use isht.lmax/isht.mmax for compatibility with revised truncation logic
  • Distributed module: added shape verification for transpose and gather operations, controllable via TORCH_HARMONICS_DISTRIBUTED_DEBUG
  • Distributed module: fixed finalize() bug where process group was not properly destroyed
  • Query functions torch_harmonics.disco.optimized_kernels_is_available and torch_harmonics.attention.optimized_kernels_is_available for checking optimized layer availability
  • Quadrature helper functions precompute_latitudes and precompute_longitudes are now public API
  • added new tests:
    • Comprehensive SHT test suite now covering vector SHT, Schmidt normalization, batch dimensions, and multiple grid types
    • New test suites for SpectralConvS2, QuadratureS2, GaussianRandomFieldS2, and ResampleS2
      Enhanced DISCO convolution tests covering different input/output channel counts and double precision
    • Enhanced attention tests with up/downsampling and opcheck integration
    • New distributed tests for primitives, quadrature, and spectral convolution
    • Shared test utilities module (testutils.py)

v0.8.0

21 Jul 16:47
c7afb54

Choose a tag to compare

  • Adding spherical attention and spherical neighborhood attention
  • Custom CUDA kerneles for spherical neighborhood attention
  • New datasets for segmentation and depth estimation on the sphere based on the 2D3DS dataset
  • added new spherical architectures and corresponding baselines
    • S2 Transformer
    • S2 Segformer
    • S2 U-Net
  • Reorganized examples folder, including new examples based on the 2d3ds dataset
  • Added spherical loss functions to examples
  • Added plotting module
  • Updated docstrings

v0.7.4

14 Jan 16:21

Choose a tag to compare

  • New filter basis normalization in DISCO convolutions
  • More robust pre-computation of DISCO convolution tensor
  • Reworked DISCO filter basis datastructure
  • Support for new filter basis types
  • Added Zernike polynomial basis on a disk
  • Added Morlet wavelet basis functions on a spherical disk
  • Cleaning up the SFNO example and adding new Local Spherical Neural Operator model
  • Updated resampling module to extend input signal to the poles if needed
  • Added slerp interpolation to the resampling module
  • Added distributed resampling module

v0.7.3

17 Dec 00:12
837335f

Choose a tag to compare

  • Changing default grid in all SHT routines to equiangular
  • Hotfix to the numpy version requirements

v0.7.2

01 Oct 16:34
663bea1

Choose a tag to compare

  • Added resampling modules for convenience
  • Changing behavior of distributed SHT to use dim=-3 as channel dimension
  • Fixing SHT unittests to test SHT and ISHT individually, rather than the roundtrip
  • Changing the way custom CUDA extensions are handled

v0.7.1

27 Aug 21:47
5d7e9b0

Choose a tag to compare

  • Hotfix to AMP in SFNO example

v0.7.0

27 Aug 16:49
1bfda53

Choose a tag to compare

  • CUDA-accelerated DISCO convolutions
  • Updated DISCO convolutions to support even number of collocation points across the diameter
  • Distributed DISCO convolutions
  • Fused quadrature into multiplication with the Psi tensor to lower memory footprint
  • Removed DISCO convolution in the plane to focus on the sphere
  • Updated unit tests which now include tests for the distributed convolutions

v0.6.5

30 Jan 14:08
54502a1

Choose a tag to compare

  • Discrete-continuous (DISCO) convolutions on the sphere and in two dimensions
  • DISCO supports isotropic and anisotropic kernel functions parameterized as hat functions
  • Supports regular and transpose convolutions
  • Experimental accelerated spherical DISCO convolutions on GPU via Triton Kernel
  • Unittests for DISCO convolutions in tests/test_convolution.py

v0.6.4

07 Dec 12:47
eab72f0

Choose a tag to compare

  • reworking distributed to allow for uneven split tensors, effectively removing the necessity of padding the transformed tensors
  • distributed SHT tests are now using unittest. Test extended to vector SHT versions. Tests are defined in torch_harmonics/distributed/distributed_tests.py
  • base pytorch container version bumped up to 23.11 in Dockerfile

v0.6.3

25 Nov 17:28
13aa492

Choose a tag to compare

  • Updated SFNO example
  • Fixes NCCL issues with distributed SHT
  • other bugixes