diff --git a/ext/LinearSolvePardisoExt.jl b/ext/LinearSolvePardisoExt.jl index afc486a8f..da7feaf61 100644 --- a/ext/LinearSolvePardisoExt.jl +++ b/ext/LinearSolvePardisoExt.jl @@ -54,14 +54,14 @@ function LinearSolve.init_cacheval(alg::PardisoJL, # pass in vector of tuples like [(iparm::Int, key::Int) ...] if iparm !== nothing - for i in length(iparm) - Pardiso.set_iparm!(solver, iparm[i]...) + for i in iparm + Pardiso.set_iparm!(solver, i...) end end if dparm !== nothing - for i in length(dparm) - Pardiso.set_dparm!(solver, dparm[i]...) + for d in dparm + Pardiso.set_dparm!(solver, d...) end end diff --git a/test/pardiso/pardiso.jl b/test/pardiso/pardiso.jl index efc1f4c23..36c24ece5 100644 --- a/test/pardiso/pardiso.jl +++ b/test/pardiso/pardiso.jl @@ -52,3 +52,80 @@ sol33 = solve(linsolve) @test sol11.u ≈ sol31.u @test sol12.u ≈ sol32.u @test sol13.u ≈ sol33.u + +# Testing and demonstrating Pardiso.set_iparm! for MKLPardisoSolver +solver = Pardiso.MKLPardisoSolver() +iparm = [ + (1, 1), + (2, 2), + (3, 0), + (4, 0), + (5, 0), + (6, 0), + (7, 0), + (8, 20), + (9, 0), + (10, 13), + (11, 1), + (12, 1), + (13, 1), + (14, 0), + (15, 0), + (16, 0), + (17, 0), + (18, -1), + (19, -1), + (20, 0), + (21, 0), + (22, 0), + (23, 0), + (24, 10), + (25, 0), + (26, 0), + (27, 1), + (28, 0), + (29, 0), + (30, 0), + (31, 0), + (32, 0), + (33, 0), + (34, 0), + (35, 0), + (36, 0), + (37, 0), + (38, 0), + (39, 0), + (40, 0), + (41, 0), + (42, 0), + (43, 0), + (44, 0), + (45, 0), + (46, 0), + (47, 0), + (48, 0), + (49, 0), + (50, 0), + (51, 0), + (52, 0), + (53, 0), + (54, 0), + (55, 0), + (56, 0), + (57, 0), + (58, 0), + (59, 0), + (60, 0), + (61, 0), + (62, 0), + (63, 0), + (64, 0), +] + +for i in iparm + Pardiso.set_iparm!(solver, i...) +end + +for i in Base.OneTo(length(iparm)) + @test Pardiso.get_iparm(solver, i) == iparm[i][2] +end