Skip to content

Commit d843f01

Browse files
committed
Fix sequence of Pardiso calls.
Panua Pardiso seems to depend on calling pardisoinit first.
1 parent 2707d96 commit d843f01

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

ext/LinearSolvePardisoExt.jl

+7-5
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,24 @@ function LinearSolve.init_cacheval(alg::PardisoJL,
2626
A = convert(AbstractMatrix, A)
2727

2828
transposed_iparm = 1
29-
solver = if false && Pardiso.PARDISO_LOADED[]
29+
solver = if Pardiso.PARDISO_LOADED[]
3030
solver = Pardiso.PardisoSolver()
31+
Pardiso.pardisoinit(solver)
3132
solver_type !== nothing && Pardiso.set_solver!(solver, solver_type)
3233

3334
solver
3435
else
3536
solver = Pardiso.MKLPardisoSolver()
37+
Pardiso.pardisoinit(solver)
3638
nprocs !== nothing && Pardiso.set_nprocs!(solver, nprocs)
37-
# for mkl 1 means conjugated an 2 means transposed.
39+
40+
# for mkl 1 means conjugated and 2 means transposed.
3841
# https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2024-0/pardiso-iparm-parameter.html#IPARM37
3942
transposed_iparm = 2
43+
4044
solver
4145
end
4246

43-
Pardiso.pardisoinit(solver) # default initialization
44-
4547
if matrix_type !== nothing
4648
Pardiso.set_matrixtype!(solver, matrix_type)
4749
else
@@ -118,9 +120,9 @@ function SciMLBase.solve!(cache::LinearSolve.LinearCache, alg::PardisoJL; kwargs
118120
Pardiso.pardiso(cache.cacheval, A, eltype(A)[])
119121
cache.isfresh = false
120122
end
121-
122123
Pardiso.set_phase!(cache.cacheval, Pardiso.SOLVE_ITERATIVE_REFINE)
123124
Pardiso.pardiso(cache.cacheval, u, A, b)
125+
124126
return SciMLBase.build_linear_solution(alg, cache.u, nothing, cache)
125127
end
126128

0 commit comments

Comments
 (0)