-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sunset linalg jazz #25217
sunset linalg jazz #25217
Conversation
At_mul_Bt, | ||
At_mul_Bt!, | ||
At_rdiv_B, | ||
At_rdiv_Bt, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, man. That is satisfying.
@@ -1,5 +1,7 @@ | |||
# This file is a part of Julia. License is MIT: https://julialang.org/license | |||
|
|||
# TODO: remove the type stubs below between 0.7 and 1.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left these type stubs in place to preserve these types' concatenation behavior during the deprecation period. (These types' concatenation behavior is defined through a set of large unions including these types in base/sparse/sparsevector.jl, which loads before base/deprecated.jl.)
const _TypedDenseConcatGroup{T} = Union{Vector{T}, Adjoint{T,Vector{T}}, Transpose{T,Vector{T}}, RowVector{T,Vector{T}}, Matrix{T}, _Annotated_Typed_DenseArrays{T}} | ||
const _SparseConcatGroup = Union{Vector, Adjoint{<:Any,<:Vector}, Transpose{<:Any,<:Vector}, Base.LinAlg.RowVector{<:Any,<:Vector}, Matrix, _SparseConcatArrays, _Annotated_SparseConcatArrays, _Annotated_DenseArrays} | ||
const _DenseConcatGroup = Union{Vector, Adjoint{<:Any,<:Vector}, Transpose{<:Any,<:Vector}, Base.LinAlg.RowVector{<:Any, <:Vector}, Matrix, _Annotated_DenseArrays} | ||
const _TypedDenseConcatGroup{T} = Union{Vector{T}, Adjoint{T,Vector{T}}, Transpose{T,Vector{T}}, Base.LinAlg.RowVector{T,Vector{T}}, Matrix{T}, _Annotated_Typed_DenseArrays{T}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RowVector
remains in these unions to preserve its concatenation behavior during the deprecation period.
|
||
# setindex!(v::RowVector, ...) should return v rather than v's parent | ||
@test setindex!(RowVector([1, 2, 3]), 4, 1)::RowVector == [4 2 3] | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Equivalents of almost all of these tests (and more besides) now exercise Adjoint
/Transpose
.
@deprecate RowVector{T}(n::Int) where {T} RowVector{T}(uninitialized, n) | ||
@deprecate RowVector{T}(n1::Int, n2::Int) where {T} RowVector{T}(uninitialized, n1, n2) | ||
@deprecate RowVector{T}(n::Tuple{Int}) where {T} RowVector{T}(uninitialized, n) | ||
@deprecate RowVector{T}(n::Tuple{Int,Int}) where {T} RowVector{T}(uninitialized, n) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved below among other things RowVector
.
I would like to give tremendous thanks to (among several other parties!) @andreasnoack, @simonbyrne, @mbauman, and @andyferris, each of whom at one point or another built a branch exploring these changes, and also for Andreas's, Simon's, and Andy's greatly helpful direct involvement in preparing this series of pull requests. ❤️! |
This is really great and an incredible amount of work. Thank you so much for doing it. |
If we have |
Triage wants to call the function to materialize a final, non-lazy result |
Thanks for all of this. Wasn't the conclusion from JuliaLang/LinearAlgebra.jl#338 that 2-arg |
Separate work :). |
To clarify - is |
In its present form, So recent discussion has favored having distinct operations that are clearly / uniformly lazy on the one hand and clearly / uniformly eager on the other. Hence the deprecation of |
Hmm... I have to say I'm still a bit confused what the plan is here. I guess I might have missed something, sorry! Let me nut this out:
I definitely agree that it's messy when some methods of a function are eager and some are lazy - but I thought the plan here had been to make all |
Much thanks for the thoughtful and cogent post Andy! I lack strong sentiments regarding which name should have |
I'm developing a new array-like wrapper type over at https://github.com/jekbradbury/Minibatch.jl, and I'm coming at this as a relative beginner. From that perspective I think there are some things that might be worth mentioning:
|
Rebased and dropped the last commit, leaving only uncontroversial changes in this pull request. Absent objections or requests for time, I plan to merge these changes tomorrow evening PT at the earliest. With the support above for transferring |
ebf71e7
to
a3044d4
Compare
(Marked triage for merge check.) |
IT'S HAPPENING!!!! 🎉 |
This pull request is the next step towards JuliaLang/LinearAlgebra.jl#57 after #24969, #25083, #25125, and #25148, completing item 18 and part of 19 in #24969's OP's task list. Specifically, this pull request: (1) deprecates all
A[ct]_(mul|ldiv|rdiv)_B[ct][!]
methods in favor of*
,/
,\
,mul!
,ldiv!
, andrdiv!
; (2) completes the transition fromConjRowVector
/RowVector
toAdjoint
/Transpose
by deprecating the former's constructors with pointers to the latter (while preserving associated functionality for the deprecation period) ; and (3) deprecatesadjoint(v)
/transpose(v)
forv<:AbstractVector
, which were already lazy, toAdjoint(v)
/Transpose(v)
.This pull request largely completes the work towards JuliaLang/LinearAlgebra.jl#57. The remaining certain work is a solid news item, documentation, and a bit of cleanup; I plan to wrap those into future pull requests after sorting out other things feature-y. The remaining uncertain work / design question is what to do about
adjoint
/transpose
for matrices; hopefully triage can sort that point out tomorrow and I will implement the decision in a downstream pull request.Thanks and best!