Skip to content

Commit f322e55

Browse files
format
1 parent 5753095 commit f322e55

File tree

11 files changed

+62
-52
lines changed

11 files changed

+62
-52
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "LinearSolve"
22
uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
33
authors = ["SciML"]
4-
version = "1.40.0"
4+
version = "1.41.0"
55

66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"

docs/src/basics/FAQ.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ as otherwise that will need to be determined at runtime.
1717
## I found a faster algorithm that can be used than what LinearSolve.jl chose?
1818

1919
What assumptions are made as part of your method? If your method only works on well-conditioned operators, then
20-
make sure you set the `WellConditioned` assumption in the `assumptions`. See the
20+
make sure you set the `WellConditioned` assumption in the `assumptions`. See the
2121
[OperatorAssumptions page for more details](@ref assumptions). If using the right assumptions does not improve
2222
the performance to the expected state, please open an issue and we will improve the default algorithm.
2323

docs/src/basics/OperatorAssumptions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ IllConditioned
1212
VeryIllConditioned
1313
SuperIllConditioned
1414
WellConditioned
15-
```
15+
```

docs/src/basics/common_solver_opts.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ The following are the options these algorithms take, along with their defaults.
1616
- `verbose`: Whether to print extra information. Defaults to `false`.
1717
- `assumptions`: Sets the assumptions of the operator in order to effect the default
1818
choice algorithm. See the [Operator Assumptions page for more details](@ref assumptions).
19+
1920
## Iterative Solver Controls
2021

2122
Error controls are not used by all algorithms. Specifically, direct solves always

ext/LinearSolveHYPRE.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function SciMLBase.init(prob::LinearProblem, alg::HYPREAlgorithm,
8484
cache = LinearCache{
8585
typeof(A), typeof(b), typeof(u0), typeof(p), typeof(alg), Tc,
8686
typeof(Pl), typeof(Pr), typeof(reltol), __issquare(assumptions),
87-
__conditioning(assumptions),
87+
__conditioning(assumptions)
8888
}(A, b, u0, p, alg, cacheval, isfresh, Pl, Pr, abstol, reltol,
8989
maxiters,
9090
verbose, assumptions)

src/common.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ end
5353
5454
Sets the operator `A` assumptions used as part of the default algorithm
5555
"""
56-
struct OperatorAssumptions{issq,condition} end
57-
function OperatorAssumptions(issquare = nothing; condition::OperatorCondition.T = OperatorCondition.IllConditioned)
56+
struct OperatorAssumptions{issq, condition} end
57+
function OperatorAssumptions(issquare = nothing;
58+
condition::OperatorCondition.T = OperatorCondition.IllConditioned)
5859
issq = something(_unwrap_val(issquare), Nothing)
5960
condition = _unwrap_val(condition)
60-
OperatorAssumptions{issq,condition}()
61+
OperatorAssumptions{issq, condition}()
6162
end
62-
__issquare(::OperatorAssumptions{issq,condition}) where {issq,condition} = issq
63-
__conditioning(::OperatorAssumptions{issq,condition}) where {issq,condition} = condition
64-
63+
__issquare(::OperatorAssumptions{issq, condition}) where {issq, condition} = issq
64+
__conditioning(::OperatorAssumptions{issq, condition}) where {issq, condition} = condition
6565

6666
struct LinearCache{TA, Tb, Tu, Tp, Talg, Tc, Tl, Tr, Ttol, issq, condition}
6767
A::TA
@@ -77,7 +77,7 @@ struct LinearCache{TA, Tb, Tu, Tp, Talg, Tc, Tl, Tr, Ttol, issq, condition}
7777
reltol::Ttol
7878
maxiters::Int
7979
verbose::Bool
80-
assumptions::OperatorAssumptions{issq,condition}
80+
assumptions::OperatorAssumptions{issq, condition}
8181
end
8282

8383
"""
@@ -143,12 +143,13 @@ default_tol(::Type{<:Rational}) = 0
143143
default_tol(::Type{<:Integer}) = 0
144144
default_tol(::Type{Any}) = 0
145145

146-
default_alias_A(::Any,::Any,::Any) = false
147-
default_alias_b(::Any,::Any,::Any) = false
146+
default_alias_A(::Any, ::Any, ::Any) = false
147+
default_alias_b(::Any, ::Any, ::Any) = false
148148

149149
function SciMLBase.init(prob::LinearProblem, alg::SciMLLinearSolveAlgorithm,
150150
args...;
151-
alias_A = default_alias_A(alg, prob.A, prob.b), alias_b = default_alias_b(alg, prob.A, prob.b),
151+
alias_A = default_alias_A(alg, prob.A, prob.b),
152+
alias_b = default_alias_b(alg, prob.A, prob.b),
152153
abstol = default_tol(eltype(prob.A)),
153154
reltol = default_tol(eltype(prob.A)),
154155
maxiters::Int = length(prob.b),

src/default.jl

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ function defaultalg(A::GPUArraysCore.AbstractGPUArray, b, assump::OperatorAssump
7474
end
7575
end
7676

77-
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b, assump::OperatorAssumptions{true,OperatorCondition.IllConditioned})
77+
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b,
78+
assump::OperatorAssumptions{true, OperatorCondition.IllConditioned})
7879
QRFactorization()
7980
end
8081

@@ -86,7 +87,8 @@ function defaultalg(A, b::GPUArraysCore.AbstractGPUArray, assump::OperatorAssump
8687
end
8788
end
8889

89-
function defaultalg(A, b::GPUArraysCore.AbstractGPUArray, assump::OperatorAssumptions{true,OperatorCondition.IllConditioned})
90+
function defaultalg(A, b::GPUArraysCore.AbstractGPUArray,
91+
assump::OperatorAssumptions{true, OperatorCondition.IllConditioned})
9092
QRFactorization()
9193
end
9294

@@ -130,7 +132,7 @@ function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.Abstract
130132
end
131133

132134
function defaultalg(A::GPUArraysCore.AbstractGPUArray, b::GPUArraysCore.AbstractGPUArray,
133-
::OperatorAssumptions{true,OperatorCondition.IllConditioned})
135+
::OperatorAssumptions{true, OperatorCondition.IllConditioned})
134136
QRFactorization()
135137
end
136138

@@ -155,33 +157,33 @@ function defaultalg(A, b, assump::OperatorAssumptions{true})
155157
# whether MKL or OpenBLAS is being used
156158
if (A === nothing && !(b isa GPUArraysCore.AbstractGPUArray)) || A isa Matrix
157159
if (A === nothing || eltype(A) <: Union{Float32, Float64, ComplexF32, ComplexF64}) &&
158-
ArrayInterface.can_setindex(b) && (__conditioning(assump) === OperatorCondition.IllConditioned ||
159-
__conditioning(assump) === OperatorCondition.WellConditioned)
160-
160+
ArrayInterface.can_setindex(b) &&
161+
(__conditioning(assump) === OperatorCondition.IllConditioned ||
162+
__conditioning(assump) === OperatorCondition.WellConditioned)
161163
if length(b) <= 10
162164
pivot = @static if VERSION < v"1.7beta"
163165
if __conditioning(assump) === OperatorCondition.IllConditioned
164166
Val(true)
165167
else
166168
Val(false)
167169
end
170+
else
171+
if __conditioning(assump) === OperatorCondition.IllConditioned
172+
RowMaximum()
168173
else
169-
if __conditioning(assump) === OperatorCondition.IllConditioned
170-
RowMaximum()
171-
else
172-
RowNonZero()
173-
end
174+
RowNonZero()
174175
end
176+
end
175177
alg = GenericLUFactorization(pivot)
176178
elseif (length(b) <= 100 || (isopenblas() && length(b) <= 500)) &&
177179
(A === nothing ? eltype(b) <: Union{Float32, Float64} :
178180
eltype(A) <: Union{Float32, Float64})
179-
pivot = if __conditioning(assump) === OperatorCondition.IllConditioned
181+
pivot = if __conditioning(assump) === OperatorCondition.IllConditioned
180182
Val(true)
181183
else
182184
Val(false)
183185
end
184-
alg = RFLUFactorization(;pivot = pivot)
186+
alg = RFLUFactorization(; pivot = pivot)
185187
#elseif A === nothing || A isa Matrix
186188
# alg = FastLUFactorization()
187189
else
@@ -191,13 +193,13 @@ function defaultalg(A, b, assump::OperatorAssumptions{true})
191193
else
192194
Val(false)
193195
end
196+
else
197+
if __conditioning(assump) === OperatorCondition.IllConditioned
198+
RowMaximum()
194199
else
195-
if __conditioning(assump) === OperatorCondition.IllConditioned
196-
RowMaximum()
197-
else
198-
RowNonZero()
199-
end
200+
RowNonZero()
200201
end
202+
end
201203
alg = LUFactorization(pivot)
202204
end
203205
elseif __conditioning(assump) === OperatorCondition.VeryIllConditioned
@@ -220,19 +222,21 @@ function defaultalg(A, b, assump::OperatorAssumptions{true})
220222
alg
221223
end
222224

223-
function defaultalg(A, b, ::OperatorAssumptions{false,OperatorCondition.WellConditioned})
225+
function defaultalg(A, b, ::OperatorAssumptions{false, OperatorCondition.WellConditioned})
224226
NormalCholeskyFactorization()
225227
end
226228

227-
function defaultalg(A, b, ::OperatorAssumptions{false,OperatorCondition.IllConditioned})
229+
function defaultalg(A, b, ::OperatorAssumptions{false, OperatorCondition.IllConditioned})
228230
QRFactorization()
229231
end
230232

231-
function defaultalg(A, b, ::OperatorAssumptions{false,OperatorCondition.VeryIllConditioned})
233+
function defaultalg(A, b,
234+
::OperatorAssumptions{false, OperatorCondition.VeryIllConditioned})
232235
QRFactorization()
233236
end
234237

235-
function defaultalg(A, b, ::OperatorAssumptions{false,OperatorCondition.SuperIllConditioned})
238+
function defaultalg(A, b,
239+
::OperatorAssumptions{false, OperatorCondition.SuperIllConditioned})
236240
SVDFactorization(false, LinearAlgebra.QRIteration())
237241
end
238242

src/factorization.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,8 @@ function NormalCholeskyFactorization(; pivot = nothing)
489489
NormalCholeskyFactorization(pivot)
490490
end
491491

492-
default_alias_A(::NormalCholeskyFactorization,::Any,::Any) = true
493-
default_alias_b(::NormalCholeskyFactorization,::Any,::Any) = true
492+
default_alias_A(::NormalCholeskyFactorization, ::Any, ::Any) = true
493+
default_alias_b(::NormalCholeskyFactorization, ::Any, ::Any) = true
494494

495495
function init_cacheval(alg::NormalCholeskyFactorization, A, b, u, Pl, Pr,
496496
maxiters::Int, abstol, reltol, verbose::Bool,
@@ -529,8 +529,8 @@ function NormalBunchKaufmanFactorization(; rook = false)
529529
NormalBunchKaufmanFactorization(rook)
530530
end
531531

532-
default_alias_A(::NormalBunchKaufmanFactorization,::Any,::Any) = true
533-
default_alias_b(::NormalBunchKaufmanFactorization,::Any,::Any) = true
532+
default_alias_A(::NormalBunchKaufmanFactorization, ::Any, ::Any) = true
533+
default_alias_b(::NormalBunchKaufmanFactorization, ::Any, ::Any) = true
534534

535535
function init_cacheval(alg::NormalBunchKaufmanFactorization, A, b, u, Pl, Pr,
536536
maxiters::Int, abstol, reltol, verbose::Bool,

src/factorization_sparse.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ function _ldiv!(x::Vector,
88
end
99

1010
function _ldiv!(x::AbstractVector,
11-
A::Union{SparseArrays.QR, LinearAlgebra.QRCompactWY,
12-
SuiteSparse.SPQR.QRSparse,
13-
SuiteSparse.CHOLMOD.Factor}, b::AbstractVector)
11+
A::Union{SparseArrays.QR, LinearAlgebra.QRCompactWY,
12+
SuiteSparse.SPQR.QRSparse,
13+
SuiteSparse.CHOLMOD.Factor}, b::AbstractVector)
1414
x .= A \ b
15-
end
15+
end

src/iterative_wrappers.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ function KrylovJL(args...; KrylovAlg = Krylov.gmres!,
1515
args, kwargs)
1616
end
1717

18-
default_alias_A(::KrylovJL,::Any,::Any) = true
19-
default_alias_b(::KrylovJL,::Any,::Any) = true
18+
default_alias_A(::KrylovJL, ::Any, ::Any) = true
19+
default_alias_b(::KrylovJL, ::Any, ::Any) = true
2020

2121
function KrylovJL_CG(args...; kwargs...)
2222
KrylovJL(args...; KrylovAlg = Krylov.cg!, kwargs...)
@@ -208,8 +208,8 @@ function IterativeSolversJL(args...;
208208
args, kwargs)
209209
end
210210

211-
default_alias_A(::IterativeSolversJL,::Any,::Any) = true
212-
default_alias_b(::IterativeSolversJL,::Any,::Any) = true
211+
default_alias_A(::IterativeSolversJL, ::Any, ::Any) = true
212+
default_alias_b(::IterativeSolversJL, ::Any, ::Any) = true
213213

214214
function IterativeSolversJL_CG(args...; kwargs...)
215215
IterativeSolversJL(args...;
@@ -318,8 +318,8 @@ function KrylovKitJL(args...;
318318
return KrylovKitJL(KrylovAlg, gmres_restart, args, kwargs)
319319
end
320320

321-
default_alias_A(::KrylovKitJL,::Any,::Any) = true
322-
default_alias_b(::KrylovKitJL,::Any,::Any) = true
321+
default_alias_A(::KrylovKitJL, ::Any, ::Any) = true
322+
default_alias_b(::KrylovKitJL, ::Any, ::Any) = true
323323

324324
function KrylovKitJL_CG(args...; kwargs...)
325325
KrylovKitJL(args...; KrylovAlg = KrylovKit.CG, kwargs..., isposdef = true)

0 commit comments

Comments
 (0)