Skip to content

Conversation

@jishnub
Copy link
Member

@jishnub jishnub commented Mar 5, 2024

Fixes JuliaLang/LinearAlgebra.jl#1057

This restores the v1.10 behavior:

julia> Diagonal([1.0]) \ [1.0]'
1×1 adjoint(::Vector{Float64}) with eltype Float64:
 1.0

This interprets the Diagonal as the matrix representation of a linear operator in the adjoint vector space.

Something similar may also be done for other structured matrix types for consistency, but that may be a different PR as this one may need to be backported.

@jishnub jishnub added linear algebra Linear algebra arrays [a, r, r, a, y, s] backport 1.11 Change should be backported to release-1.11 labels Mar 5, 2024
@KristofferC KristofferC mentioned this pull request Mar 6, 2024
60 tasks
@jishnub jishnub requested a review from dkarrasch March 10, 2024 05:50
@dkarrasch dkarrasch merged commit f882c00 into master Mar 11, 2024
@dkarrasch dkarrasch deleted the jishnub/matproddest_similar_diagadjvec branch March 11, 2024 14:15
KristofferC pushed a commit that referenced this pull request Mar 15, 2024
KristofferC added a commit that referenced this pull request Mar 17, 2024
Backported PRs:
- [x] #39071 <!-- Add a lazy `logrange` function and `LogRange` type -->
- [x] #51802 <!-- Allow AnnotatedStrings in log messages -->
- [x] #53369 <!-- Orthogonalize re-indexing for FastSubArrays -->
- [x] #48050 <!-- improve `--heap-size-hint` arg handling -->
- [x] #53482 <!-- add IR encoding for EnterNode -->
- [x] #53499 <!-- Avoid compiler warning about redefining jl_globalref_t
-->
- [x] #53507 <!-- update staled `Core.Compiler.Effects` documentation
-->
- [x] #53408 <!-- task splitting: change additive accumulation to
multiplicative -->
- [x] #53523 <!-- add back an alias for `check_top_bit` -->
- [x] #53377 <!-- add _readdirx for returning more object info gathered
during dir scan -->
- [x] #53525 <!-- fix InteractiveUtils call in Base.runtests on failure
-->
- [x] #53540 <!-- use more efficient `_readdirx` for tab completion -->
- [x] #53545 <!-- use `_readdirx` for `walkdir` -->
- [x] #53551 <!-- revert "Add @create_log_macro for making custom styled
logging macros (#52196)" -->
- [x] #53554 <!-- Always return a value in 1-d circshift! of
abstractarray.jl -->
- [x] #53424 <!-- yet more atomics & cache-line fixes on work-stealing
queue -->
- [x] #53571 <!-- Update Documenter to v1.3 for inventory writing -->
- [x] #53403 <!-- Move parallel precompilation to Base -->
- [x] #53589 <!-- add back `unsafe_convert` to pointer for arrays -->
- [x] #53596 <!-- build: remove extra .a file -->
- [x] #53606 <!-- fix error path in `precompilepkgs` -->
- [x] #53004 <!-- Unexport with, at_with, and ScopedValue from Base -->
- [x] #53629 <!-- typo fix in scoped values docs -->
- [x] #53630 <!-- sroa: Fix incorrect scope counting -->
- [x] #53598 <!-- Use Base parallel precompilation to build stdlibs -->
- [x] #53649 <!-- precompilepkgs: package in boths deps and weakdeps are
in fact only weak -->
- [x] #53671 <!-- Fix bootstrap Base precompile in cross compile
configuration -->
- [x] #52125 <!-- Load Pkg if not already to reinstate missing package
add prompt -->
- [x] #53602 <!-- Handle zero on arrays of unions of number types and
missings -->
- [x] #53516 <!-- permit NamedTuple{<:Any, Union{}} to be created -->
- [x] #53643 <!-- Bump CSL to 1.1.1 to fix libgomp bug -->
- [x] #53679 <!-- move precompile workload back from Base -->
- [x] #53663 <!-- add isassigned methods for reinterpretarray -->
- [x] #53662 <!-- [REPL] fix incorrectly cleared line after completions
accepted -->
- [x] #53611 <!-- Linalg: matprod_dest for Diagonal and adjvec -->
- [x] #53659 <!-- fix #52025, re-allow all implicit pointer casts in
cconvert for Array -->
- [x] #53631 <!-- LAPACK: validate input parameters to throw informative
errors -->
- [x] #53628 <!-- Make some improvements to the Scoped Values
documentation. -->
- [x] #53655 <!-- Change tbaa of ptr_phi to tbaa_value  -->
- [x] #53391 <!-- Default to the medium code model in x86 linux -->
- [x] #53699 <!-- Move `isexecutable, isreadable, iswritable` to
`filesystem.jl` -->
- [x] #41232 <!-- Fix linear indexing for ReshapedArray if the parent
has offset axes -->
- [x] #53527 <!-- Enable analyzegc checks for try catch and fix found
issues -->
- [x] #52092 
- [x] #53682 <!-- Increase build precompilation -->
- [x] #53720 
- [x] #53553 <!-- typeintersect: fix `UnionAll` unaliasing bug caused by
innervars. -->

Contains multiple commits, manual intervention needed:
- [ ] #53305 <!-- Propagate inbounds in isassigned with CartesianIndex
indices -->

Non-merged PRs with backport label:
- [ ] #53736 <!-- fix literal-pow to return the right type when the base
is -1 -->
- [ ] #53707 <!-- Make ScopedValue public -->
- [ ] #53696 <!-- add invokelatest to on_done callback in bracketed
paste -->
- [ ] #53660 <!-- put Logging back in default sysimage -->
- [ ] #53509 <!-- revert moving "creating packages" from Pkg.jl -->
- [ ] #53452 <!-- RFC: allow Tuple{Union{}}, returning Union{} -->
- [ ] #53402 <!-- Add `jl_getaffinity` and `jl_setaffinity` -->
- [ ] #52694 <!-- Reinstate similar for AbstractQ for backward
compatibility -->
- [ ] #51928 <!-- Styled markdown, with a few tweaks -->
- [ ] #51816 <!-- User-themable stacktraces -->
- [ ] #51811 <!-- Make banner size depend on terminal size -->
- [ ] #51479 <!-- prevent code loading from lookin in the versioned
environment when building Julia -->
@KristofferC KristofferC removed the backport 1.11 Change should be backported to release-1.11 label Mar 18, 2024
@maleadt
Copy link
Member

maleadt commented Apr 9, 2024

This broke CUDA.jl, where we relied on Diagonal{CuArray} * Adjoint{CuMatrix} being implemented with lmul! -> mul!, as we don't have a direct mul! for these types. We actually do have a mostly generic implementation of mul! for Diagonal, https://github.com/JuliaGPU/GPUArrays.jl/blob/228fb9e8f878333cc0eda8678c8e7c2d6b5a6df2/src/host/linalg.jl#L260-L318, however those aren't matched because:

julia> LinearAlgebra.Adjoint{Float64, Matrix{Float64}} <: AbstractVecOrMat
true

julia> LinearAlgebra.Adjoint{Float64, CuMatrix{Float64}} <: GPUArrays.AbstractGPUVecOrMat
false

(and simply widening the AbstractGPUArray inputs to the methods linked above creates a bunch of ambiguities.)

So I guess the root of the problem is #51910 again. Any suggested alternatives?

@dkarrasch
Copy link
Member

But this seems to touch AdjOrTransAbsVec only, not adjoint(::AbstractMatrix). Perhaps the breaking change is something else/earlier?

@maleadt
Copy link
Member

maleadt commented Apr 9, 2024

I guess #52389 then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arrays [a, r, r, a, y, s] linear algebra Linear algebra

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Change in backslash between adjoined arrays.

5 participants