Skip to content

Commit db40696

Browse files
Fix Pardiso precaching form
1 parent 8213cd7 commit db40696

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

src/pardiso.jl

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@ end
88

99
MKLPardisoFactorize(;kwargs...) = PardisoJL(;kwargs...)
1010
MKLPardisoIterate(;kwargs...) = PardisoJL(;kwargs...)
11+
needs_concrete_A(alg::PardisoJL) = true
1112

1213
# TODO schur complement functionality
1314

1415
function init_cacheval(alg::PardisoJL, A, b, u, Pl, Pr, maxiters, abstol, reltol, verbose)
1516
@unpack nprocs, solver_type, matrix_type, iparm, dparm = alg
16-
17-
if A isa DiffEqArrayOperator
18-
A = A.A
19-
end
17+
A = convert(AbstractMatrix,A)
2018

2119
solver =
2220
if Pardiso.PARDISO_LOADED[]
@@ -67,23 +65,20 @@ end
6765

6866
function SciMLBase.solve(cache::LinearCache, alg::PardisoJL; kwargs...)
6967
@unpack A, b, u = cache
70-
if A isa DiffEqArrayOperator
71-
A = A.A
72-
end
68+
A = copy(convert(AbstractMatrix,A))
7369

74-
if cache.isfresh
75-
Pardiso.set_phase!(cache.cacheval, Pardiso.NUM_FACT)
76-
Pardiso.pardiso(cache.cacheval, cache.u, cache.A, cache.b)
77-
end
70+
#if cache.isfresh
71+
# Pardiso.set_phase!(cache.cacheval, Pardiso.NUM_FACT)
72+
# Pardiso.pardiso(cache.cacheval, u, A, b)
73+
#end
74+
#Pardiso.set_phase!(cache.cacheval, Pardiso.SOLVE_ITERATIVE_REFINE)
7875

79-
Pardiso.set_phase!(cache.cacheval, Pardiso.SOLVE_ITERATIVE_REFINE)
76+
Pardiso.set_phase!(cache.cacheval, Pardiso.ANALYSIS_NUM_FACT_SOLVE_REFINE)
8077
Pardiso.pardiso(cache.cacheval, u, A, b)
8178

8279
return SciMLBase.build_linear_solution(alg,cache.u,nothing,cache)
8380
end
8481

85-
needsconcreteA(alg::PardisoJL) = true
86-
8782
# Add finalizer to release memory
8883
# Pardiso.set_phase!(cache.cacheval, Pardiso.RELEASE_ALL)
8984

0 commit comments

Comments
 (0)