LinearAlgebra: copyto! between banded matrix types #54041
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This specialized
copyto!
for combinations of banded structured matrix types so that the copy may be O(N) instead of the fallback O(N^2) implementation.E.g.:
This also changes the
copyto!
implementation for mismatched matrix sizes, bringing it closer to the docstring. So, the following works on master:but this won't work anymore with this PR. This was inconsistent anyway, as materializing the matrices produces a different result, which shouldn't be the case:
After this PR, the way to carry out the copy would be
This change fixes JuliaLang/LinearAlgebra.jl#932.
Also fixes JuliaLang/LinearAlgebra.jl#1061
After this,
which is roughly linear scaling.
Taken along with #54027, the speed-ups would also apply to the adjoints of banded matrices.