Releases: QuantumKitHub/TensorKit.jl
v0.17.0
TensorKit v0.17.0
This release reworks the index manipulation API, adding backend and allocator support while uniformizing the API.
Highlights
- Reworked index manipulation API with backend and allocator support, plus accompanying documentation (#416, #438)
- BraidingTensor can now have a custom storage type (#393)
- Mooncake forward rules for linear algebra functions (#434)
- Improved GPU support by bypassing scalar indexing (#375), with bumped minimum CUDA/cuTENSOR versions (#404)
Full Changelog
See CHANGELOG for the complete list of changes.
Merged pull requests:
- fix: improvements to bypass scalar indexing and improve GPU support (#375) (@kshyatt)
- Rework index manipulation API (#416) (@lkdvos)
remove_gauge_dependence!overloads (#419) (@lkdvos)- Fix for SUNRepresentations type parameter change (#426) (@leburgel)
- fix: actually pass testsuite to
runtests(#427) (@lkdvos) - Simplify
map(isdual, (co)domain)(#430) (@Yue-Zhengyuan) - Return a tuple when broadcasting over ProductSpace (#431) (@Yue-Zhengyuan)
- feat: support
broadcastandmapforHomSpace(#432) (@lkdvos) - Mooncake forward rules for linalg (#434) (@kshyatt)
- Remove unnecessary _ind_intersect (#435) (@kshyatt)
- Documentation for index-manipulation and contraction API rework (#438) (@lkdvos)
- Correct artin braid image (#441) (@borisdevos)
- Fix foldright cache miss dual flag (#442) (@yitan1)
- Release v0.17.0 (#444) (@lkdvos)
Closed issues:
v0.16.5
TensorKit v0.16.5
v0.16.5 is a patch release backporting fixes and a small feature from the v0.17 development line.
Highlights
- Support for
DefaultAlgorithm(#422, #423) - Fix
BraidingTensorplanarcontract!(#418) - Improve
checksquareerror message (#417)
Full Changelog
See CHANGELOG for the complete list of changes.
Merged pull requests:
- [Backport] Implement
DefaultAlgorithmsupport (#422) (#423) (@lkdvos) - Release v0.16.5 (#424) (@lkdvos)
Closed issues:
v0.16.4
TensorKit v0.16.4
Patch release with partial AMDGPU support, significant performance improvements to fusiontree manipulations, and several bug fixes.
Highlights
- Partial tensor support for AMDGPU via a new extension (#341)
- Significant performance improvements: vectorized fusiontree manipulations (#261), reduced cache footprint (#387), avoid generic matmul fallback in transformation kernels (#378)
- Fixed ignored
adjointflag inBraidingTensor(#392) - Added
spacetypeforTruncationSpaceand square checks forproject_(anti)hermitian/ eigenvalue decompositions (#403, #408)
Full Changelog
See CHANGELOG for the complete list of changes.
Closed issues:
foldrightassumptions forUniqueFusion(#245)- Contracting planar tensors with changeable legs (#252)
fusionblockstructureshould reuse data that is degeneracy-independent (#384)domain == codomainis not checked inproject_(anti)hermitian(#388)- Inconsistent dual flags in spaces (#391)
- Define equality for
TruncationStrategys (#407)
v0.16.3
TensorKit v0.16.3
A patch release with expanded Mooncake support, improved GPU compatibility, and documentation updates.
Highlights
- Expanded Mooncake AD rules for broader automatic differentiation coverage (#356).
- Adapt support for
BraidingTensor, enabling GPU array adaptation workflows (#374). - Additional upstream and CUDA compatibility fixes, including
Base.ones/zerosacceptingCuArray(#373).
Notable changes
Added
- Expanded set of Mooncake AD rules for more comprehensive differentiation support (#356).
Adapt.jlsupport forBraidingTensor, allowing it to be adapted to GPU arrays (#374).
Changed
- Documentation improvements and updates across multiple sections (#345).
Fixed
Base.onesandBase.zerosnow acceptCuArraystorage types for CUDA tensors (#373).- Additional small fixes for upstream Julia and CUDA compatibility (#373).
Upgrade notes
- This is a patch release; the public API remains compatible with v0.16.2.
- Mooncake rule expansion may improve differentiation of previously unsupported operations.
Merged pull requests:
- Some more documentation progress (#345) (@Jutho)
- Expand set of Mooncake rules (#356) (@lkdvos)
- A few more small fixes for upstream + CUDA (#373) (@kshyatt)
- Adapt for
BraidingTensor(#374) (@lkdvos) - Bump v0.16.3 (#377) (@lkdvos)
Closed issues:
v0.16.2
TensorKit v0.16.2
A patch release with important bug fixes and improved handling for storagetype.
Highlights
- Enhanced
storagetypepromotion system that robustly handles unions and abstract tensor map types (#370). - Multiple truncation bug fixes improving reliability of truncation operations (#368, #369).
- small CUDA support improvements (#366).
Notable changes
Added
- A more robust promotion system for
storagetypes to better handle working with unions and other abstract tensor map types (#370).
Fixed
- Fix
findtruncatedwithtruncspaceto correctly handle truncation spaces (#369). - Fix
truncrankwhen kept rank is larger than input (#368). - Added missing
similardefinition forSectorVector, improving compatibility and extensibility (#367). - Small fixes for CUDA support, specifically ChainRules and constructor improvements (#366).
Upgrade notes
- This is a patch release; the public API remains compatible with v0.16.1.
- The improved
storagetypepromotion system may change behavior when mixing different storage types, but should generally be more correct and predictable.
Full changelog: see docs/src/Changelog.md.
Merged pull requests:
- Small fixes for upstream + CUDA (#366) (@kshyatt)
- Small utility for working with
SectorVector(#367) (@lkdvos) - Fix
truncrankwhen kept rank is larger than input rank (#368) (@Yue-Zhengyuan) - Fix
findtruncatedwithtruncspace(#369) (@Yue-Zhengyuan) - Promote storagetypes (#370) (@lkdvos)
- v0.16.2 (#371) (@lkdvos)
v0.16.1
TensorKit v0.16.1
A small patch release with bug fixes, performance improvements, and early GPU/extension support.
Highlights
- Initial CUDA support for factorizations and preparatory work for CUDA-backed workflows (#336, #325).
- GPU-friendly truncation implementations and
normoptimizations for large tensors (#349, #351). - Better preservation of tensor
storagetypewhen converting betweenTensorMaprepresentations (#357).
Notable changes
Added
- CUDA support groundwork for factorizations and GPU extensions (#336, #325).
- Mooncake and Adapt extension integration scaffolding (#352, #344).
- Exported
TimeReversedsymbol for convenience (#337).
Changed
convert(TensorMap, t)retainsstoragetypeduring conversions (#357).transposespecialization forDiagonalTensorMapto improve correctness/performance (#335).- Unified
CartesianSpaceandComplexSpaceconstructors (#334). - TensorOperations AD cleanup and test reorganization (#343, #339).
Fixed
- Correct handling of real tensors with complex
scalartype(#360). - Stable ordering for diagonal eigenvalues (#350).
- Divide-by-zero safety in
showfor empty tensors and ensuresvd_vals(::DiagonalTensorMap)returnsSectorVector(#329, #333). - Various type-stability and small test fixes (several commits).
- Adding tensors of different types now correctly promotes (#364)
Performance
- GPU-friendly truncation routines reduce host/GPU overhead for large truncations (#349).
normimprovements reduce allocations and speed common cases (#351).
Upgrade notes
- This is a patch release; the public API remains compatible with v0.16.0.
- CUDA support is initial. To use CUDA features, enable the CUDA/cuTENSOR stack and the optional extensions (see
Project.tomlextras).
Contributors
Thanks to: Lukas Devos, Katharine Hyatt, Boris De Vos, Yue Zhengyuan, and others for contributions and reviews.
Merged pull requests:
- Start on CUDA extension (#325) (@kshyatt)
- replace
eltypewithscalartypeinblas_contract!(#326) (@lkdvos) - rework tensor contructors to allow storagetype specification (#327) (@lkdvos)
- Fix
showfor empty tensors (#329) (@lkdvos) - Improve
Diagonalconstructors withsimilar_diagonal(#330) (@lkdvos) - Small fixes and changelog updates (#331) (@lkdvos)
svd_vals(::DiagonalTensorMap)should return aSectorVector(#333) (@lkdvos)- Uniformize
CartesianSpaceandComplexSpaceconstructors (#334) (@lkdvos) transposespecialization forDiagonalTensorMap(#335) (@lkdvos)- Initial support for CUDA + factorizations (#336) (@kshyatt)
- export
TimeReversed(#337) (@borisdevos) - Move bugfixes Zygote tests to AD tests (#339) (@kshyatt)
- TensorOperations AD clean-up (#343) (@lkdvos)
- Adapt extension (#344) (@lkdvos)
- GPU-friendly truncation implementations (#349) (@lkdvos)
- sorted Diagonal eigenvalues (#350) (@lkdvos)
normperformance optimization (#351) (@lkdvos)- Setup Mooncake extension (#352) (@lkdvos)
convert(TensorMap, t)retains storagetype (#357) (@lkdvos)- Fix handling of real tensors with complex scalartype (#360) (@lkdvos)
- Construct DiagonalTensorMap from SectorVector (#363) (@Yue-Zhengyuan)
- Adding
DiagonalTensorMapandTensorMapmixtures (#364) (@lkdvos) - v0.16.1 (#365) (@lkdvos)
Closed issues:
- truncation error with
rtol(#314) - v0.16: Conflicting
ishermitianwhen precompiling (#328) - initialize
ComplexSpacefrom vector errors (#332) - GPU + truncation support collation issue (#346)
- Would more detailed error message of SpaceMismatch be possible (#347)
- Support
CUDA.zerosandCUDA.onesforTensorMap(#353) - Error when adding/subtracting
TensorMapandDiagonalTensorMap(#361) - Create DiagonalTensorMap from SectorVector (#362)
v0.16.0
TensorKit v0.16.0
Release notes:
We are pleased to announce TensorKit.jl v0.16.0! This release expands multifusion support, makes accessing diagonal data easier, streamlines tensor printing, and refreshes our TensorOperations backend while tightening documentation and error messaging.
🎉 Highlights
- Multifusion utilities:
unitspace,zerospace,leftunitspace,rightunitspace,isunitspace(#291) - Projections and orthogonal complements across tensors (#312)
rrulefortransposeto improve AD coverage (#319)- TensorOperations backend/allocator rework for clearer extensibility (#311)
- First part of a major docs overhaul plus symmetric tensor tutorial (#289, #316)
- Changes to tensor showing/printing methods, with (part of) tensor block data being shown (#322)
SectorVector <: AbstractVectoras output type for singular and eigenvalues (#324)
✨ New Features
- Multifusion spaces now expose
unitspace,zerospace,leftunitspace,rightunitspace,isunitspaceto reason about units and zero objects (#291) - Projections and orthogonal complements for tensors (#312)
- ChainRules
rrulefortranspose(#319)
🔧 Improvements
left_orth,right_orth,left_null,right_null,ishermitian, andisisometricaligned with MatrixAlgebraKit v0.6 interfaces (#312)svd_vals,eig_valsandeigh_valsnow output a "vector" instead of a diagonal tensor. (#325)- TensorOperations reworked around backend and allocator abstractions for cleaner extensibility (#311)
- Clearer error messages across the codebase (#309)
- Changes to tensor showing/printing methods, with (part of) tensor block data being shown (#322)
🐛 Fixes
- Avoid unnecessary copy in
twistfor bosonic braiding tensors (#305) - Miscellaneous fixes and typos (#295)
📦 Dependencies
- MatrixAlgebraKit v0.6-compatible interfaces for factorization helpers
- TensorOperations backend and allocator better integrated
📚 Documentation
- Broad documentation refresh with improved navigation (#289)
- Added symmetric tensor tutorial in the appendix (#316)
🙏 Acknowledgments
Thanks to everyone who contributed PRs, issues, and feedback for this release.
🔗 Links
Merged pull requests:
- WIP: Documentation update/overhaul (#289) (@Jutho)
- Generalising functions to support
GenericUnit(#291) (@borisdevos) - Avoid copy in
twistfor tensors with bosonic braiding (#305) (@leburgel) - Error message improvements (#309) (@lkdvos)
- remove
'\n'in compact printing of tensors (#310) (@lkdvos) - rework TensorOperations implementation to use backend and allocator (#311) (@lkdvos)
- Updates for MatrixAlgebraKit v0.6 (#312) (@lkdvos)
- Add symmetric tensor tutorial to docs as appendix (#316) (@leburgel)
- Bump actions/checkout from 5 to 6 (#318) (@dependabot[bot])
- Add
rrulefortranspose(#319) (@lkdvos) - Bump v0.16 + Remove old deprecations (#321) (@lkdvos)
- further tweak tensor and block show (#322) (@Jutho)
- Update changelog [skip ci] (#323) (@Jutho)
- Add
SectorVector(#324) (@lkdvos)
Closed issues:
v0.15.3
TensorKit v0.15.3
Merged pull requests:
v0.15.2
TensorKit v0.15.2
TensorKit v0.15.2 contains some changes with respect to how objects are printed. By default, tensors now no longer print their data, and only print their spaces. To inspect the data of a tensor t, blocks(t) and subblocks(t) can be used to print and alter the data in different forms.
We've also updated our compatibility to TensorKitSectors v0.3, which entails some internal consistency naming changes and improvements but should otherwise not affect users. This does provide a step towards full support of multi-fusion categories in TensorKit (Shout-out to @borisdevos for this work).
This patch release also contains fixes and performance improvements:
- The issue with multiple truncation schemes (
TruncationIntersection) has been solved (#300) - Some unnecessary allocations in the reverse rules for contractions and tensor products have been avoided (#306)
- The test suite was refactored and split into several groups to reduce the total CI runtime and improve local selective running of the tests (#298)
Merged pull requests:
- Changes for TensorKitSectors v0.3 (#290) (@borisdevos)
- Refactor test suite (#298) (@lkdvos)
- Fix
TruncationIntersectionimplementation and test (#300) (@lkdvos) - Show improvements +
subblocksiterator (#304) (@lkdvos) - avoid twist allocating in rrules when not required (#306) (@lkdvos)
- Bump v0.15.2 (#307) (@lkdvos)
Closed issues:
v0.15.1
TensorKit v0.15.1
Small fixes and some typos.
Merged pull requests: