| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Codecov Report❌ Patch coverage is 89.53488% with 9 lines in your changes missing coverage. Please review.
... and 3 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Sorry, something went wrong.
|
Your PR no longer requires formatting changes. Thank you for your contribution! |
Sorry, something went wrong.
|
Assuming that the tests pass here, I think this should be ready to be merged. |
Sorry, something went wrong.
|
What change made it such that so much code in "src/factorizations/factorizations.jl" can be removed? |
Sorry, something went wrong.
|
Most of that code was introduced in the first place to work around the design of the orthnull parts. This was one of the main motivations to rework that, which now more cleanly reuses the different factorization functions. I think the biggest contribution is that we now first figure out the algorithm type, which dictates the factorization type, and only then start the rest of the logic, which makes it a lot easier to implement in a generic way. Additionally we've been more careful in MatrixAlgebraKit to not overly specialize on AbstractMatrix, and while there is a bit more boilerplate over there, we can remove quite a lot of it here. |
Sorry, something went wrong.
|
What's the status here? This is blocking the GPU updates PR :) |
Sorry, something went wrong.
|
I will try to go through tonight. |
Sorry, something went wrong.
|
Ok, I went over this PR (and the whole src/factorizations/ code more generally) during the past few days. I made a few changes already, but also left some more comments. I think this is almost ready, but it would be good to have a discussion about the deprecation path of the old interface. For me, the MatrixAlgebraKit function naming was always a convenient way to implement all these methods as a library implementer. And I think it is very useful that they all exist at the level of TensorMaps as well. But a library as TensorKit might also want to have an additional more convenient interface with shorter function names (better discoverable) and more general behavior, where truncation is simply controlled by a keyword argument, such as the earlier tsvd (I guess that is the most important one). It would be good to exchange ideas about this. |
Sorry, something went wrong.
|
I'm definitely happy to discuss having higher-level interfaces in TensorKit, but probably that does not have to hold back this PR, and should be handled separately. As mentioned in one of the comments above, in the long run I would like to have a better way to deal with the AdjointTensorMap implementations, preferably already in MatrixAlgebraKit, but that probably has to wait for a bit anyways, so I might advocate trying to merge this PR first. |
Sorry, something went wrong.
|
I think this is probably ready? |
Sorry, something went wrong.
|
Let's merge this asap and then tag a new TensorKit version, because the fact that tsvd (besides being deprecated) no longer returns the truncation error seems to be breaking many people's codes. |
Sorry, something went wrong.
|
I agree to merge this ASAP. I had a more in-depth look at the adjoint implementations, and it turns out that copy_input requires f instead of f!, so our specializations were just never called since the fallback of copy_input instantiates a regular tensor instead of an adjoint one. One last thing I have been considering and wanted to bring up, although this can be handled in a separate PR as well since it wouldn't be breaking, is how much we value the check_input functions at the tensor level. For the release, I think this has to count as breaking again, both because of #305 as well as the left_orth and right_orth changes, and the isisometry to isisometric. Are there other changes we want to include in this release as well? |
Sorry, something went wrong.
|
I was wondering about the double action of check_input, but mostly from a performance concern. However, I assume these checks are mostly very lightweight, so I am wondering if removing them from the tensormap level is such a good idea. I guess it's a matter of weighing the benefits of less code to maintain vs clearer error messages. Then again, mostly these checks are there for the output tensors, and if most users do not actually allocate these themselves, the checks are also quite useless, since they just check that our initialize_output works as intended. So maybe we can indeed go ahead, and add specific more informative checks at the tensor level when the need presents itself. So I will approve and then I think automerge will kick in. |
Sorry, something went wrong.
* initial basic design SectorVector * some additional functionality * relax `foreachblock` signature * replace `SectorDict` with `SectorVector` for eig/svdvals * export `svd_vals` * clean up SectorVector design * small fix * add finitedifferences support * update changelog * some simplifications and extensions * some further fixes * some more fixes * update dates --------- Co-authored-by: Jutho Haegeman <jutho.haegeman@ugent.be>
| Back | FazBrowse Home | New Git URL |
This PR brings TensorKit up to speed with the MatrixAlgebraKit v0.6.
The main changes are the addition of the new projection functionality, and a rework of the orthnull interface.
The former is mostly just implemented here, while the latter means that a lot of code could be removed from TensorKit instead.
I additionally took the time to hopefully stabilize some of the truncated SVD AD tests, as these struggled with finite differences in combination with spaces that change.