11needs_concrete_A (alg:: DefaultLinearSolver ) = true
22mutable struct DefaultLinearSolverInit{T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
3- T13, T14, T15, T16, T17}
3+ T13, T14, T15, T16, T17, T18 }
44 LUFactorization:: T1
55 QRFactorization:: T2
66 DiagonalFactorization:: T3
@@ -18,6 +18,7 @@ mutable struct DefaultLinearSolverInit{T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
1818 CholeskyFactorization:: T15
1919 NormalCholeskyFactorization:: T16
2020 AppleAccelerateLUFactorization:: T17
21+ MKLLUFactorization:: T18
2122end
2223
2324# Legacy fallback
@@ -162,19 +163,24 @@ function defaultalg(A, b, assump::OperatorAssumptions)
162163 DefaultAlgorithmChoice. GenericLUFactorization
163164 elseif VERSION >= v " 1.8" && appleaccelerate_isavailable ()
164165 DefaultAlgorithmChoice. AppleAccelerateLUFactorization
165- elseif (length (b) <= 100 || (isopenblas () && length (b) <= 500 )) &&
166+ elseif (length (b) <= 100 || (isopenblas () && length (b) <= 500 ) ||
167+ (usemkl && length (b) <= 200 )) &&
166168 (A === nothing ? eltype (b) <: Union{Float32, Float64} :
167169 eltype (A) <: Union{Float32, Float64} )
168170 DefaultAlgorithmChoice. RFLUFactorization
169171 # elseif A === nothing || A isa Matrix
170172 # alg = FastLUFactorization()
173+ elseif usemkl
174+ DefaultAlgorithmChoice. MKLLUFactorization
171175 else
172- DefaultAlgorithmChoice. GenericLUFactorization
176+ DefaultAlgorithmChoice. LUFactorization
173177 end
174178 elseif __conditioning (assump) === OperatorCondition. VeryIllConditioned
175179 DefaultAlgorithmChoice. QRFactorization
176180 elseif __conditioning (assump) === OperatorCondition. SuperIllConditioned
177181 DefaultAlgorithmChoice. SVDFactorization
182+ elseif usemkl
183+ DefaultAlgorithmChoice. MKLLUFactorization
178184 else
179185 DefaultAlgorithmChoice. LUFactorization
180186 end
@@ -209,6 +215,8 @@ function algchoice_to_alg(alg::Symbol)
209215 LDLtFactorization ()
210216 elseif alg === :LUFactorization
211217 LUFactorization ()
218+ elseif alg === :MKLLUFactorization
219+ MKLLUFactorization ()
212220 elseif alg === :QRFactorization
213221 QRFactorization ()
214222 elseif alg === :DiagonalFactorization
0 commit comments