Cyclops v1.5.4
Release includes bug fixes and a number of major functionality extensions:
- CCSR layout (CSR with compression of row counts to nonzero rows) is now supported for sparse=sparse*dense contractions
- TTTP (tensor times tensor product) is now supported, which enables efficient handling of contractions like V["ijk"] = U["ijk"]*A["jr"]*B["kr"], to arbitrary order with operands like A and B for any selection of modes in U
- Cholesky and triangular solve are now directly interfaced to ScaLAPACK, also available on python layer
- reshape functionality is now available at C++ level
- sparse tensor I/O is now available
- a randomized SVD routine has been added to C++ and Python level
- option to threshold singular values has been added to regular SVD
- SVD can now be called explicitly on tensors, with modes selected for the left and right singular vectors via strings
- a light-weight contraction execution time model has been added
- contraction of a sequence of tensors is now done in the best linear ordering for up to 8 tensors (this will be improved in the near future to the best tree ordering)
- depending on the predicted sparsity of the output, sparse intermediates are now automatically defined and used within a sequence of contractions, including for sparse*dense contractions where the sparse tensor has fewer nonzeros than rows in the corresponding matrix unfolding
- various bug fixed have been made to the python interface, in particular, sparsity is now maintained and scaling is handled more properly