Recent Releases of cytnx

cytnx - v1.0.1

What's Changed

  • fix leak bug in calling override/virtual func in destructor by @kaihsin in https://github.com/Cytnx-dev/Cytnx/pull/564
  • Remove OpenMP usage by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/573
  • Establish benchmarks by @hunghaoti in https://github.com/Cytnx-dev/Cytnx/pull/575
  • Require minimum CMake version 3.24 for CUDA builds by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/578
  • Fix HPTT build when using OpenBLAS by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/581
  • Create CITATION.cff, to add doi and url for web site. by @y3jo6 in https://github.com/Cytnx-dev/Cytnx/pull/540
  • Fix build when enabling CUDA but not cuQuantum by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/582
  • Replace Install.sh with CMakePresets.json by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/579
  • Update CITATION.cff by @IvanaGyro in https://github.com/Cytnx-dev/Cytnx/pull/589

New Contributors

  • @y3jo6 made their first contribution in https://github.com/Cytnx-dev/Cytnx/pull/540

Full Changelog: https://github.com/Cytnx-dev/Cytnx/compare/v1.0.0...v1.0.1

- C++
Published by IvanaGyro 11 months ago

cytnx - v1.0.0

This is the release of the version v1.0.0, which is the stable version of the project.

Release notes: 1. [Important] This is the first stable release of the project. 2. [Change] Merge Contract and Contracts into Contract, and Contract_ and Contracts_ ito Contract. 3. [Change] Merge relabel and relabels into relabel, and relabel and relabels_ into relabel. 4. [New] Add an optional argument minblockdim to svdtruncate to define a minimum dimension for each block. 5. [New] Add Eig/Eigh functions for Block UniTensor. 6. [New] Add Lancos-like algoirthm, LanczosExp, to approximate exponential operator acting on a state. 7. [Change] Migrate cuTENSOR APIs to the version 2. 8. [Change] reshape_ and permute_ to return the object itself instead of None. 9. [Change] Remove the magma dependency. 10. [Enhance] Optimize the contraction order finding algorithm.

- C++
Published by hunghaoti about 1 year ago

cytnx - v1.0.0

This is the release of the version v1.0.0, which is the stable version of the project.

Release notes: 1. [Important] This is the first stable release of the project. 2. [Change] Merge Contract and Contracts into Contract, and Contract_ and Contracts_ ito Contract. 3. [Change] Merge relabel and relabels into relabel, and relabel and relabels_ into relabel. 4. [New] Add an optional argument minblockdim to svdtruncate to define a minimum dimension for each block. 5. [New] Add Eig/Eigh functions for Block UniTensor. 6. [New] Add Lancos-like algoirthm, LanczosExp, to approximate exponential operator acting on a state. 7. [Change] Migrate cuTENSOR APIs to the version 2. 8. [Change] reshape_ and permute_ to return the object itself instead of None. 9. [Change] Remove the magma dependency. 10. [Enhance] Optimize the contraction order finding algorithm.

- C++
Published by hunghaoti about 1 year ago

cytnx - v0.9.7

- C++
Published by jeffry1829 about 2 years ago

cytnx - v0.9.6

- C++
Published by kaihsin over 2 years ago

cytnx - v0.9.5

Same content as 094, fix CD to conda-forge

- C++
Published by kaihsin over 2 years ago

cytnx - v0.9.4

This has the same content as v0.9.3

- C++
Published by kaihsin over 2 years ago

cytnx - v0.9.3

This release includes

  1. improvements of GPUs, integrated with cutensor/cuquantum.
  2. extra Svd methods for both CPU and GPU.
  3. Other improvements of user API including conversion between symmetric and non-sym UniTensors.

- C++
Published by kaihsin over 2 years ago

cytnx - v0.9.2

This update includes following major changes:

1.[Important] [Change] Remove all deprecated APIs and old SparseUniTensor data structure
2. [Fix] Bugs when batch_matmul when no MKL
3. [Update] Update examples to match new APIs
4. [New] add labels options when creating UniTensor from Tensor.
5. [New] change MKL to mkl_rt instead of fixed interface ilp64/lp64

- C++
Published by kaihsin over 2 years ago

cytnx - v0.9.1

This update includes

  1. [New] Add additional argument share_mem for Tensor.numpy() python API.
  2. [Fix] UniTensor.at() python API not properly wrapped.
  3. [Fix] Bug in testing for BlockUniTensor.
  4. [Fix] Bug in UniTensor print info (duplicate name, is_diag=true BlockUniTensor dimension display)
  5. [Change] Svd now using gesdd instead of gesvd.
  6. [New] Add linalg.Gesvd function, along with Gesvd_truncate.
  7. [Fix] Strict casting rule cause compiling fail when compile with icpc
  8. [New] Add additional argument for Network.PutUniTensor to match the label.
  9. [Fix] Network TOUT string lbl bug
  10. [Fix] #156 storage python wrapper cause not return.
  11. [Add] linalg.Gemm/Gemm_()
  12. [Add] UniTensor.normalize()/normalize_()

- C++
Published by kaihsin almost 3 years ago

cytnx - v0.7.6

This update includes several optimization. 1. [Enhance] Adding alias BDIN=BDKET, BDBRA=BDOUT, BDNONE=BDREG. 2. [New] Add Contracts for multiple UniTensors contraction.
3. [Fix] cytnx.cpp_lib for some version of cmake and conda install, libpath is lib64 instead of lib.
4. [Optimize] SparseUniTensor contiguous (moving elements) 5. [Optimize] cytnxerror* will now evaluate the clause first, and then instance the following strings. 6. [Enhance] Add Global bool variable User_debug, which when set to false some checking will be skipped, which increasing the execution speed 7. [Enhance] Add Network.getOptimalOrder()

- C++
Published by kaihsin over 3 years ago

cytnx - v0.7.4

v0.7.4 1. [Enhance] LanczosER LanczosGnd not convergence with maxiter will now gives warning instead of error. 2. [Enhance] Arithmetic of UniTensor(&)constant now preserve the label of input UniTensor. 3. [New][experiment] Add MPS class with two variant: iMPS, RegularMPS. 4. [New][experiment] Add MPO class. 5. [Enhance] Add UniTensor.relabel 6. [Enhance] Add Network.FromString 7. [New][experiment] DMRG API
8. [New][experiment] Add MPS Save/Load, and can now have different physdim for each site. 9. [Fix] SparseUniTensor.permute does not properly update contiguous status when rowrank argument is given. 10. [Enhance] getblock()/putblock() by qnums now have a new argument "force" to get blocks from non-braketform UniTensor. 11. [New] Add SparseUniTensor contract 12. [New] Add SparseUniTensor linalg::Svd support. 13. [Enhance] SparseUniTensor print info, add "contiguous" status. 14. [Enhance] Add printinfo for Symmetry descriptor 15. [Enhance] Add UniTensor.syms() 16. [Fix] Tensor.set when one of accessor is Singl will cause error. 17. [Enhance] SparseUniTensor diag x diag, diag x dense are finished. 18. [Fix] SparseUniTensor when diag permutation issue.
19. [Fix] Sort does not return out Tensor. 20. [Fix] Tproxy.item() does not get correct element. 21. [Fix] Bug for Svd on SparseUniTensor vT is being set by U 22. [New][experiment] Svd
truncate for SparseUniTensor 23. [New] add Bond.redirect(), Bond.retype() 24. [Fix] SparseUniTensor.permute() does not properly update braketform 25. [Fix] SparseUniTensor.setrowrank should track innerrowrank not rowrank bug. 26. [Enhance] Add UniTensor.changelabel() <- [Removed!!] use relabel(s)()
27. [Fix] Svdtruncate when one of the block has only dim=1 should fill-in the dangling dimension. 28. [New][experiment] iTEBD with U1 symmetry example for Heisenberg chain 29. [Change] v0.7.4 [26.] replace changelabel() with relabel. Now only have setlabel(s) and relabel(s) with *label() have bylabel option.
30. [Enhance] Add Accessor option Qns, qns() 31. [Change] Trace now by default trace axis =0 and axis=1 if no argument specify. 32. [Fix] Compare of two Bonds will now also check qnums. 33. [New][experiment] SparseUniTensor.Trace() now support rank-2 symmetric UniTensor -> scalar 34. [New][experiment] Contract of SparseUniTensor with two SUT with same labels -> scalar is now avaliable 35. [Fix] DMRG initialize does not properly normalize the init state.
36. [New] Scalar.conj(), Scalar.real(), Scalar.imag(), Scalar.maxval(dtype), Scalar.minval(dtype) 37. [Enhance] Lanczos internal now written with single general function. 38. [Enhance] Storage.append() now accept Scalar 39. [Enhance][Fix] Fix inplace Arithmetic between Tensor +=(-=,*=,/=) Tensor with both non-contiguous leads to inconsistent memory alignment. 40. [Enhance] from 39. add iAdd(), iDiv(), iMul(), iSub(), this can be called by user but is not recommended. 41. [Enhance] Modify DMRG kernel for generic UniTensor as state. 42. [New][experiment] Add Lanczos
GndUt() which accept Tin as UniTensor 43. [New][experiment] LinOp now add an matvec option for UniTensor => UniTensor, which can be used together with LanczosGndUt 44. [Change] Remove LinOp with custom function support, inheritance is forced. 45. [Enhance] add Tensor.at() without template. 46. [Change][Enhance] Remove UniTensor.getelem/setelem, unify them with at(). 47. [Fix] Trace for SparseUniTensor with isdiag=True. 48. [New][experiment] MPS.Norm() 49. [Fix] LanczosGndUt when input dimension is only 2 now check if the beta=0. 50. [New] Add DMRG U1 example.
51. [Change] Behavior change for Svdtruncate. SparseUniTensor the keepdim can exceed the current dimension of UniTensor, in such case it is equivalent to Svd. 52. [New] Add UniTensor.Norm() 53. [New][experiment] add MPS.InitMsector(), which initialize the state with specify total magnetization. 54. [Enhance] Add additional feature Svdtruncate with truncationerr (err) and returnerr option for Ten 55. [Enhance] Add additional feature Svdtruncate with truncationerr (err) and returnerr option for DUTen 56. [Enhance] Add python dmrg example for using tn_algo

- C++
Published by kaihsin over 4 years ago

cytnx -

v0.7.3 1. [Fix] bug for Get slice does not reduce when dim=1. 2. [Enhance] checking the memory alloc failing for EL. 3. [Change] remove Tensor init assignment op from initializerlist, for conflict with UniTensor init. 4. [Enhance] print information for Symmetric UniTensor. 5. [Enhance] linalg::ExpM/ExpH support for symmetric UniTensor. 6. [Enhance] add UniTensor.getblocksqnums() for corresponding qnums for current blocks. 7. [Enhance][Safety] add UniTensor.getblocks(silent=false) with "silent" option by default pop-up a warning when UniTensor is non-contiguous.
8. [Enhance] add operator* and operator*= for combineBond. 9. [Enhance] add support for Symmetric UniTensor with is
diag=true. 10. [Fix] remove the dtype & device option for arange(Nelem). Use .astype() .to() instead. 11. [Fix] reshape() without postfix const causing error when reshape with const Tensor. 12. [Enhance][Experiment] add Lstsq for least square calculation. [PR] 13. [Fix][C++] minor issue related to laterial argument passing by variables cannot properly resolved on C++ 14. [Enhance] Diag now support rank-1 Tensor as input for constructing a diagonal tensor with input as diagonal elements. 15. [Enhance] Add c++ example for DMRG (Ke) 16. [Fix] Bug fixed in DMRG code and updated to the latest features. 17. [Fix] Bug in UniTensor do svd with rowrank=1 and the first rank has dimension=1. 18. [Enhance] add Scalar: abs, opeartor<, operator>, operator<=, operator>= 19. [Fix] #31 cd, cf internal swiching error for LanczosER. 20. [Enhance] add specialization for Tensor iarithmetic with Sproxy. 21. [Fix] #31 cftcf Mul internal memcpy with wrong unit size. 22. [Fix] #31 type accessing now partially via Scalar, so no conflict will occur when ovld matvec() gives mismatched input and output type. 23. [Fix] Tensor / Storage set element with Sproxy or Scalar is now available. 24. [Fix] LanczosGnd on f type accessing now partially via Scalar, so no conflict will occur when ovld matvec() gives mismatched input and output type.

- C++
Published by kaihsin over 4 years ago

cytnx - v0.7.2

  1. [Enhance] Add Tensor.set with Scalar
  2. [Enhance][C++] Add Tensor initialize assignment op from initializer_list
  3. [Enhance][C++] Add Storage initialize assignment op from vector & initializer list
  4. [Fix] bug for set partial elements on Tensor with slicing issue.
  5. [Fix][DenseUniTensor] set_rowrank cannot set full rank issue #24

- C++
Published by kaihsin almost 5 years ago

cytnx - v0.7.1a

  1. [Enhance] Finish UniTensor arithmetic.
  2. [Fix] bug when using Tensor.get() accessing only single element
  3. [Enhance] Add default argument isU = True and isvT = True for Svd_truncate() python API

- C++
Published by kaihsin almost 5 years ago

cytnx - v0.7a

1. [Enhance] add binary op. -Tensor.
2. [Enhance] New introduce Scalar class, generic scalar placeholder.
3. [Enhance][expr] Storage.at(), Storage.back(), Storage.get_item() can now without specialization. The return is Scalar class.
4. [Enhance] Storage.get_item, Storage.set_item
5. [Enhance] Scalar, iadd,isub,imul,idiv
6. [Important] Storage.resize will match the behavior of vector, new elements are set to zero!
7. [Enhance] Scalar +,-,*,/ finished
8. [Enhance] add Histogram class and stat namespace.    
9. [Enhance] add fstream option for Tofile
10. [Enhance] return self when UniTensor.set_name
11. [Enhance] return self when UniTensor.set_label(s)
12. [Enhance] return self when UniTensor.set_rowrank
13. [Fatal!][Fix] fix bug of wrong answer in Tensor slice for non-contiguous Tensor, with faster internal kernel
14. [Warning] Slice of GPU Tensor is now off-line for further inspection. 
15. [Fix] bug causing crash when print non-contiguous Uint64 Tensor    
16. [Fatal!][Fix] fix bug of wrong answer in Tensor set-element with slice for non-contiguous Tensor. 
17. [Enhance] Network on the fly construction.
18. [Enhance] Scalar: Add on TN. TN.item()
19. [Fix] bug in Mod interanlly calling Cpr fixed.    
20. [Enhance] All operation related to TN <-> Scalar
21. [Enhance] Reduce RTTR overhead. 

- C++
Published by kaihsin almost 5 years ago

cytnx - v0.6.5a

  1. [Fix] Bug in UniTensor _Load
  2. [Enhance] Improve stability in Lanczos_ER
  3. [Enhance] Move _SII to stack.
  4. [Enhance] Add LinOp operator() for mv_elem
  5. [Enhance] Add c++ API fast link to cutt
  6. [Enhance] Add Fromfile/Tofile for load/save binary files @ Tensor/Storage
  7. [Enhance] Add linspace generator
  8. [Fix] Bug in Div for fast Blas call bug
  9. [Enhance] Add Tensor.append(Storage) if Tensor is rank-2 and dimension match.
  10. [Enhance] Add algo namespace
  11. [Enhance] Add Sort-@cpu
  12. [Enhance] add Storage.numpy() for pythonAPI
  13. [Enhance] add Tensor.from_storage() for python API

- C++
Published by kaihsin over 5 years ago

cytnx - v0.6.4a

v0.6.4 1. [Enhance] Add option mvelem for Tensordot, which actually move elements in input tensor. This is beneficial when same tensordot is called multiple times. 2. [Enhance] Add option cacheL, cacheR to Contract of unitensor. which mv the elements of input tensors to the matmul handy position. 3. [Enhance] optimize Network contraction policy to reduce contiguous permute, with isclone argument when PutUniTensor. 4. [Enhance] Add LanczosGnd for fast get ground state and it's eigen value (currently only real float). 5. [Enhance] Add Tridiag python API, and option isrow 6. [Enhance] C++ API storage add .back<>() function. 7. [Enhance] C++ API storage fix fromvector() for bool type. 8. [Enhance] Change Network Launch optimal=True behavior. if user order is given, optimal will not have effect.
9. [Enhance] Add example/iDMRG/dmrg
optim.py for better performace with Lanczos_Gnd and Network cache. 10. [Fix] wrong error message in linalg::Cpr 11. [Fix] reshape() on a already contiguous Tensor will resulting as the change in original tensor, which should not happened.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.6.3a

This major update contains

  1. [Enhance] Add Device.Ncpus for detecting avaliable omp threads
  2. [Enhance] Add HPTT support on CPU permute.
  3. [Internal] Build version centralize
  4. [Enhance] More info for Device.
  5. [Enhance] Add cytnx.variant_info for checking the installed variant.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.6.2a

This update includes:

1. [Fix] Bug in CUDA Matmul interface passing the wrong object bug.
2. [Enhance] Add Matmul_dg for diagonal matrix mutiply dense matrix.
3. [Enhance] Add Tensordot_dg for tensordot with either Tl or Tr is diagonal matrix
4. [Enhance] Contract dense & sparse memory optimized.
5. [example] Add iTEBD_gpu.py example
6. [Fix] Bug in CUDA cuVectordot d and f seg fault
7. [Enhance] Add cuReduce for optimized reduction.
8. [Enhance] Optimize performance for Mul_internal_cpu.
9. [Enhance] Optimize performance for Div_internal_cpu.
10. [Fix] Bug in permute of UniTensor/Tensor with duplicate entries does not return error.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.6.1a

1. [Enhance] add Scalar class (shadow)
2. [Enhance] change default allocation from Malloc to Calloc.
3. [Enhance] change storage.raw_ptr() to storage.data() and storage.data<>()
4. [Enhance] change storage.cap to STORAGE_DEFT_SZ that can be tune.
5. [Enhance] adding Tproxy/Tproxy, Tproxy/Tensor, Tensor/Tproxy operation
6. [Enhance] Add mv_elem type for LinOp, which intrinsically omp the matvec operation.
7. [Fatal  ] Fix bug in Dot for Matrix-Vector multiplication on both GPU and CPU with complex&real float dtypes.

- C++
Published by kaihsin over 5 years ago

cytnx -

  1. This update integrated the storage convention of permute/reshape/contiguous/astype to match numpy and pytorch.
  2. New way to better distribute the C++ API with conda install.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.6a

This release include fix some minor bugs, and add new way for user to easy compile C++ code that using cytnx C++ API.

The C++ API will be install via conda install method along with python API.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.5a

This is the major release for simplify and unify namespace of the extension.

  1. Better convension of python like function calls in C++ side.
  2. Fix bugs, and add instruction for install on MacOS.
  3. Fix bugs related to MacOS with clang.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.4a_rev1

This release fix bug in real-complex Sub.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.4a

This update enhance the lapack and blas from lp (32bit) to ilp (64bit), and add new class LinOp for customize operators that can be used for cytnx iterative solver Lanczos_ER

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.3a

This release includes fixing bugs, and add more implementation of TN algos.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.2a_rev1

This is the update of release v0.5.2a, include the fix of Abs truncation floating point bug.

- C++
Published by kaihsin over 5 years ago

cytnx - v0.5.1a

This is a update including several fix of critical bugs in v0.5.0a, and add some new linalg support.

- C++
Published by kaihsin almost 6 years ago

cytnx - v0.5.0a

The pre-alpha version of 0.5

- C++
Published by kaihsin almost 6 years ago