Skip to content

Commit 7c9141f

Browse files
Merge pull request #367 from BeatHubmann/main
Fix setting of Pardiso iparm and dparm parameters
2 parents f531dd0 + 14ed061 commit 7c9141f

File tree

2 files changed

+81
-4
lines changed

2 files changed

+81
-4
lines changed

ext/LinearSolvePardisoExt.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ function LinearSolve.init_cacheval(alg::PardisoJL,
5454

5555
# pass in vector of tuples like [(iparm::Int, key::Int) ...]
5656
if iparm !== nothing
57-
for i in length(iparm)
58-
Pardiso.set_iparm!(solver, iparm[i]...)
57+
for i in iparm
58+
Pardiso.set_iparm!(solver, i...)
5959
end
6060
end
6161

6262
if dparm !== nothing
63-
for i in length(dparm)
64-
Pardiso.set_dparm!(solver, dparm[i]...)
63+
for d in dparm
64+
Pardiso.set_dparm!(solver, d...)
6565
end
6666
end
6767

test/pardiso/pardiso.jl

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,80 @@ sol33 = solve(linsolve)
5252
@test sol11.u sol31.u
5353
@test sol12.u sol32.u
5454
@test sol13.u sol33.u
55+
56+
# Testing and demonstrating Pardiso.set_iparm! for MKLPardisoSolver
57+
solver = Pardiso.MKLPardisoSolver()
58+
iparm = [
59+
(1, 1),
60+
(2, 2),
61+
(3, 0),
62+
(4, 0),
63+
(5, 0),
64+
(6, 0),
65+
(7, 0),
66+
(8, 20),
67+
(9, 0),
68+
(10, 13),
69+
(11, 1),
70+
(12, 1),
71+
(13, 1),
72+
(14, 0),
73+
(15, 0),
74+
(16, 0),
75+
(17, 0),
76+
(18, -1),
77+
(19, -1),
78+
(20, 0),
79+
(21, 0),
80+
(22, 0),
81+
(23, 0),
82+
(24, 10),
83+
(25, 0),
84+
(26, 0),
85+
(27, 1),
86+
(28, 0),
87+
(29, 0),
88+
(30, 0),
89+
(31, 0),
90+
(32, 0),
91+
(33, 0),
92+
(34, 0),
93+
(35, 0),
94+
(36, 0),
95+
(37, 0),
96+
(38, 0),
97+
(39, 0),
98+
(40, 0),
99+
(41, 0),
100+
(42, 0),
101+
(43, 0),
102+
(44, 0),
103+
(45, 0),
104+
(46, 0),
105+
(47, 0),
106+
(48, 0),
107+
(49, 0),
108+
(50, 0),
109+
(51, 0),
110+
(52, 0),
111+
(53, 0),
112+
(54, 0),
113+
(55, 0),
114+
(56, 0),
115+
(57, 0),
116+
(58, 0),
117+
(59, 0),
118+
(60, 0),
119+
(61, 0),
120+
(62, 0),
121+
(63, 0),
122+
(64, 0),
123+
]
124+
125+
for i in iparm
126+
Pardiso.set_iparm!(solver, i...)
127+
end
128+
129+
for i in Base.OneTo(length(iparm))
130+
@test Pardiso.get_iparm(solver, i) == iparm[i][2]
131+
end

0 commit comments

Comments
 (0)