NDTensors.jl
NDTensors.jl copied to clipboard
A Julia package for n-dimensional sparse tensors.
Simplify the [_contract_scalar!](https://github.com/ITensor/NDTensors.jl/blob/233780b1cf8d0f9e910b7c86d2c3e6f06f95a91d/src/dense.jl#L789-L805) logic by using [LoopVectorization.jl]() instead of BLAS calls. I believe in general `LoopVectorization.jl` is as fast as MKL for any BLAS level 1 and 2 operations (and...
Improve the matrix multiplication backend switching mechanism as discussed here: https://github.com/ITensor/NDTensors.jl/pull/69/#issuecomment-812557618
See the discussion [here](https://github.com/ITensor/ITensorsGPU.jl/issues/10).
New generic functions `setstorage` and `setdata` were introduced in #72. These can be used to decrease code duplication across storage types. Here is a running list of examples where they...
It could be useful to adopt some interface ideas from other Julia packages that implement blocked arrays/matrices, for example: - [BlockArrays.jl](https://github.com/JuliaArrays/BlockArrays.jl) - [BlockSparseMatrices.jl](https://github.com/KristofferC/BlockSparseMatrices.jl) - [BlockBandedMatrices.jl](https://github.com/JuliaMatrices/BlockBandedMatrices.jl) - [BlockDiagonals.jl](https://github.com/invenia/BlockDiagonals.jl) For example, in...
Uncombining can "generate" nonzero blocks: ```julia using ITensors i = Index(QN(0,2)=>2,QN(1,2)=>2; tags="i") j = settags(i,"j") A = emptyITensor(i,j,dag(i')) A[1,1,1] = 1.0 C = combiner(i, j; tags="c") AC = A *...
Right now, a view of the vector storage of a `Tensor` can be obtained with the function `data`. We could consider adopting the Julia SparseArrays function name `nonzeros` for this...
The `contract` function, at least for the case of Dense tensors, currently only succeeds when the labels arguments obey certain conventions, as shown in the example code below. It would...
I noticed when comparing CTMRG benchmarks in ITensors.jl to C++ ITensor, ITensors.jl is a bit slower (maybe by 20% with no BLAS threading). Based on profiling, it looks like the...
We should set up CI for NDTensors.jl. Unfortunately the tests are not very comprehensive right now. Also, a lot of the functionality is tested through ITensors.jl, and it is important...