Skip to content

Commit 34acd3b

Browse files
authored
Prepare for AdjointFactorization (#111)
* Prepare for `AdjointFactorization` * simplify
1 parent 050c796 commit 34acd3b

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "SuiteSparseGraphBLAS"
22
uuid = "c2e53296-7b14-11e9-1210-bddfa8111e1d"
33
authors = ["Will Kimmerer <[email protected]>", "Abhinav Mehndiratta <[email protected]>"]
4-
version = "0.9.0"
4+
version = "0.9.1"
55

66
[deps]
77
Blobs = "163b9779-6631-5f90-a265-3de947924de8"

src/solvers/umfpack.jl

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ const JL_UMFPACK_FRONT_ALLOC_INIT = UMFPACK_FRONT_ALLOC_INIT + 1
102102
const JL_UMFPACK_DROPTOL = UMFPACK_DROPTOL + 1
103103
const JL_UMFPACK_IRSTEP = UMFPACK_IRSTEP + 1
104104

105+
const AdjointFact = isdefined(LinearAlgebra, :AdjointFactorization) ? LinearAlgebra.AdjointFactorization : Adjoint
106+
const TransposeFact = isdefined(LinearAlgebra, :TransposeFactorization) ? LinearAlgebra.TransposeFactorization : Transpose
107+
105108
## UMFPACK
106109

107110
# there might be quite a bit of duplication here.
@@ -188,7 +191,7 @@ workspace_W_size(F::GBUmfpackLU) = workspace_W_size(F, has_refinement(F))
188191
workspace_W_size(S::Union{GBUmfpackLU{<:AbstractFloat}, AbstractGBMatrix{<:AbstractFloat}}, refinement::Bool) = refinement ? 5 * size(S, 2) : size(S, 2)
189192
workspace_W_size(S::Union{GBUmfpackLU{<:Complex}, AbstractGBMatrix{<:Complex}}, refinement::Bool) = refinement ? 10 * size(S, 2) : 4 * size(S, 2)
190193

191-
const ATLU = Union{Transpose{<:Any, <:GBUmfpackLU}, Adjoint{<:Any, <:GBUmfpackLU}}
194+
const ATLU = Union{TransposeFact{<:Any, <:GBUmfpackLU}, AdjointFact{<:Any, <:GBUmfpackLU}}
192195
has_refinement(F::ATLU) = has_refinement(F.parent)
193196
has_refinement(F::GBUmfpackLU) = has_refinement(F.control)
194197
has_refinement(control::AbstractVector) = control[JL_UMFPACK_IRSTEP] > 0
@@ -229,8 +232,10 @@ Base.copy(F::GBUmfpackLU{Tv}, ws=UmfpackWS(F); safecopy = false) where {Tv} =
229232
Base.copy(F::T, ws=UmfpackWS(F)) where {T <: ATLU} =
230233
T(copy(parent(F), ws))
231234

232-
Base.adjoint(F::GBUmfpackLU) = Adjoint(F)
233-
Base.transpose(F::GBUmfpackLU) = Transpose(F)
235+
if VERSION < v"1.10-"
236+
Base.adjoint(F::GBUmfpackLU) = Adjoint(F)
237+
end
238+
Base.transpose(F::GBUmfpackLU) = TransposeFact(F)
234239

235240
function Base.lock(f::Function, F::GBUmfpackLU)
236241
lock(F)
@@ -799,8 +804,8 @@ end
799804
function UMFPACK.solve!(
800805
lu::Union{
801806
GBUmfpackLU,
802-
<:Adjoint{Any, <:GBUmfpackLU},
803-
<:Transpose{<:Any, <:GBUmfpackLU}
807+
<:AdjointFact{Any, <:GBUmfpackLU},
808+
<:TransposeFact{<:Any, <:GBUmfpackLU}
804809
},
805810
B::AbstractGBArray
806811
)
@@ -833,8 +838,8 @@ import LinearAlgebra.ldiv!
833838
function ldiv!(
834839
lu::Union{
835840
GBUmfpackLU,
836-
<:Adjoint{Any, <:GBUmfpackLU},
837-
<:Transpose{<:Any, <:GBUmfpackLU}
841+
<:AdjointFact{Any, <:GBUmfpackLU},
842+
<:TransposeFact{<:Any, <:GBUmfpackLU}
838843
},
839844
B::AbstractGBArray)
840845

@@ -853,28 +858,28 @@ end
853858

854859
ldiv!(lu::GBUmfpackLU{T}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
855860
ldiv!(B, lu, copy(B))
856-
ldiv!(translu::Transpose{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
861+
ldiv!(translu::TransposeFact{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
857862
(lu = translu.parent; ldiv!(B, transpose(lu), copy(B)))
858-
ldiv!(adjlu::Adjoint{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
863+
ldiv!(adjlu::AdjointFact{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
859864
(lu = adjlu.parent; ldiv!(B, adjoint(lu), copy(B)))
860865
ldiv!(lu::GBUmfpackLU{Float64}, B::StridedVecOrMat{<:Complex}) =
861866
ldiv!(B, lu, copy(B))
862-
ldiv!(translu::Transpose{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{<:Complex}) =
867+
ldiv!(translu::TransposeFact{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{<:Complex}) =
863868
(lu = translu.parent; ldiv!(B, transpose(lu), copy(B)))
864-
ldiv!(adjlu::Adjoint{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{<:Complex}) =
869+
ldiv!(adjlu::AdjointFact{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{<:Complex}) =
865870
(lu = adjlu.parent; ldiv!(B, adjoint(lu), copy(B)))
866871

867872
ldiv!(X::StridedVecOrMat{T}, lu::GBUmfpackLU{T}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
868873
_Aq_ldiv_B!(X, lu, B, UMFPACK_A)
869-
ldiv!(X::StridedVecOrMat{T}, translu::Transpose{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
874+
ldiv!(X::StridedVecOrMat{T}, translu::TransposeFact{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
870875
(lu = translu.parent; _Aq_ldiv_B!(X, lu, B, UMFPACK_Aat))
871-
ldiv!(X::StridedVecOrMat{T}, adjlu::Adjoint{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
876+
ldiv!(X::StridedVecOrMat{T}, adjlu::AdjointFact{T,<:GBUmfpackLU{T}}, B::StridedVecOrMat{T}) where {T<:UMFVTypes} =
872877
(lu = adjlu.parent; _Aq_ldiv_B!(X, lu, B, UMFPACK_At))
873878
ldiv!(X::StridedVecOrMat{Tb}, lu::GBUmfpackLU{Float64}, B::StridedVecOrMat{Tb}) where {Tb<:Complex} =
874879
_Aq_ldiv_B!(X, lu, B, UMFPACK_A)
875-
ldiv!(X::StridedVecOrMat{Tb}, translu::Transpose{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{Tb}) where {Tb<:Complex} =
880+
ldiv!(X::StridedVecOrMat{Tb}, translu::TransposeFact{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{Tb}) where {Tb<:Complex} =
876881
(lu = translu.parent; _Aq_ldiv_B!(X, lu, B, UMFPACK_Aat))
877-
ldiv!(X::StridedVecOrMat{Tb}, adjlu::Adjoint{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{Tb}) where {Tb<:Complex} =
882+
ldiv!(X::StridedVecOrMat{Tb}, adjlu::AdjointFact{Float64,<:GBUmfpackLU{Float64}}, B::StridedVecOrMat{Tb}) where {Tb<:Complex} =
878883
(lu = adjlu.parent; _Aq_ldiv_B!(X, lu, B, UMFPACK_At))
879884

880885
function _Aq_ldiv_B!(X::StridedVecOrMat, lu::GBUmfpackLU, B::StridedVecOrMat, transposeoptype)

0 commit comments

Comments
 (0)