@@ -18,18 +18,26 @@ cache_kwargs = (; abstol = 1e-8, reltol = 1e-8, maxiter = 30)
18
18
19
19
prob2 = LinearProblem (A2, b2)
20
20
21
- algs= [PardisoJL ()]
21
+ algs= LinearSolve. SciMLLinearSolveAlgorithm[PardisoJL ()]
22
+ solvers= Pardiso. AbstractPardisoSolver[]
23
+ extended_algs= LinearSolve. SciMLLinearSolveAlgorithm[PardisoJL ()]
22
24
23
25
if Pardiso. mkl_is_available ()
24
- algs= vcat (algs,[MKLPardisoFactorize (), MKLPardisoIterate ()])
26
+ push! (algs,MKLPardisoFactorize ())
27
+ push! (solvers,Pardiso. MKLPardisoSolver ())
28
+ extended_algs= vcat (extended_algs,[MKLPardisoFactorize (), MKLPardisoIterate ()])
29
+ @info " Testing MKL Pardiso"
25
30
end
26
31
27
32
if Pardiso. panua_is_available ()
28
- algs= vcat (algs,[PanuaPardisoFactorize (), PanuaPardisoIterate ()])
33
+ push! (algs,PanuaPardisoFactorize ())
34
+ push! (solvers,Pardiso. PardisoSolver ())
35
+ extended_algs= vcat (extended_algs,[PanuaPardisoFactorize (), PanuaPardisoIterate ()])
36
+ @info " Testing Panua Pardiso"
29
37
end
30
38
31
39
32
- for alg in algs
40
+ for alg in extended_algs
33
41
u = solve (prob1, alg; cache_kwargs... ). u
34
42
@test A1 * u ≈ b1
35
43
@@ -38,7 +46,6 @@ for alg in algs
38
46
@test A2 * u ≈ b2
39
47
end
40
48
41
- return
42
49
43
50
44
51
Random. seed! (10 )
@@ -48,24 +55,27 @@ b1 = rand(n);
48
55
b2 = rand (n);
49
56
prob = LinearProblem (copy (A), copy (b1))
50
57
51
- prob = LinearProblem ( copy (A), copy (b1))
58
+
52
59
linsolve = init (prob, UMFPACKFactorization ())
53
60
sol11 = solve (linsolve)
54
61
linsolve = LinearSolve. set_b (sol11. cache, copy (b2))
55
62
sol12 = solve (linsolve)
56
63
linsolve = LinearSolve. set_A (sol12. cache, copy (A2))
57
64
sol13 = solve (linsolve)
58
65
59
- linsolve = init (prob, MKLPardisoFactorize ())
60
- sol31 = solve (linsolve)
61
- linsolve = LinearSolve. set_b (sol31. cache, copy (b2))
62
- sol32 = solve (linsolve)
63
- linsolve = LinearSolve. set_A (sol32. cache, copy (A2))
64
- sol33 = solve (linsolve)
65
66
66
- @test sol11. u ≈ sol31. u
67
- @test sol12. u ≈ sol32. u
68
- @test sol13. u ≈ sol33. u
67
+
68
+ for alg in algs
69
+ linsolve = init (prob, alg)
70
+ sol31 = solve (linsolve)
71
+ linsolve = LinearSolve. set_b (sol31. cache, copy (b2))
72
+ sol32 = solve (linsolve)
73
+ linsolve = LinearSolve. set_A (sol32. cache, copy (A2))
74
+ sol33 = solve (linsolve)
75
+ @test sol11. u ≈ sol31. u
76
+ @test sol12. u ≈ sol32. u
77
+ @test sol13. u ≈ sol33. u
78
+ end
69
79
70
80
71
81
# Test for problem from #497
@@ -78,87 +88,92 @@ function makeA()
78
88
return (A)
79
89
end
80
90
81
- A= makeA ()
82
- u0= fill (0.1 ,size (A,2 ))
83
- linprob = LinearProblem (A, A* u0)
84
- u = LinearSolve. solve (linprob, PardisoJL ())
85
- @test norm (u- u0) < 1.0e-14
86
91
92
+ for alg in algs
93
+ A= makeA ()
94
+ u0= fill (0.1 ,size (A,2 ))
95
+ linprob = LinearProblem (A, A* u0)
96
+ u = LinearSolve. solve (linprob, alg)
97
+ @test norm (u- u0) < 1.0e-14
98
+ end
87
99
88
100
89
- # Testing and demonstrating Pardiso.set_iparm! for MKLPardisoSolver
90
- solver = Pardiso. MKLPardisoSolver ()
91
- iparm = [
92
- (1 , 1 ),
93
- (2 , 2 ),
94
- (3 , 0 ),
95
- (4 , 0 ),
96
- (5 , 0 ),
97
- (6 , 0 ),
98
- (7 , 0 ),
99
- (8 , 20 ),
100
- (9 , 0 ),
101
- (10 , 13 ),
102
- (11 , 1 ),
103
- (12 , 1 ),
104
- (13 , 1 ),
105
- (14 , 0 ),
106
- (15 , 0 ),
107
- (16 , 0 ),
108
- (17 , 0 ),
109
- (18 , - 1 ),
110
- (19 , - 1 ),
111
- (20 , 0 ),
112
- (21 , 0 ),
113
- (22 , 0 ),
114
- (23 , 0 ),
115
- (24 , 10 ),
116
- (25 , 0 ),
117
- (26 , 0 ),
118
- (27 , 1 ),
119
- (28 , 0 ),
120
- (29 , 0 ),
121
- (30 , 0 ),
122
- (31 , 0 ),
123
- (32 , 0 ),
124
- (33 , 0 ),
125
- (34 , 0 ),
126
- (35 , 0 ),
127
- (36 , 0 ),
128
- (37 , 0 ),
129
- (38 , 0 ),
130
- (39 , 0 ),
131
- (40 , 0 ),
132
- (41 , 0 ),
133
- (42 , 0 ),
134
- (43 , 0 ),
135
- (44 , 0 ),
136
- (45 , 0 ),
137
- (46 , 0 ),
138
- (47 , 0 ),
139
- (48 , 0 ),
140
- (49 , 0 ),
141
- (50 , 0 ),
142
- (51 , 0 ),
143
- (52 , 0 ),
144
- (53 , 0 ),
145
- (54 , 0 ),
146
- (55 , 0 ),
147
- (56 , 0 ),
148
- (57 , 0 ),
149
- (58 , 0 ),
150
- (59 , 0 ),
151
- (60 , 0 ),
152
- (61 , 0 ),
153
- (62 , 0 ),
154
- (63 , 0 ),
155
- (64 , 0 )
156
- ]
157
-
158
- for i in iparm
159
- Pardiso. set_iparm! (solver, i... )
160
- end
161
101
162
- for i in Base. OneTo (length (iparm))
163
- @test Pardiso. get_iparm (solver, i) == iparm[i][2 ]
102
+
103
+ # Testing and demonstrating Pardiso.set_iparm! for MKLPardisoSolver
104
+ for solver in solvers
105
+ iparm = [
106
+ (1 , 1 ),
107
+ (2 , 2 ),
108
+ (3 , 0 ),
109
+ (4 , 0 ),
110
+ (5 , 0 ),
111
+ (6 , 0 ),
112
+ (7 , 0 ),
113
+ (8 , 20 ),
114
+ (9 , 0 ),
115
+ (10 , 13 ),
116
+ (11 , 1 ),
117
+ (12 , 1 ),
118
+ (13 , 1 ),
119
+ (14 , 0 ),
120
+ (15 , 0 ),
121
+ (16 , 0 ),
122
+ (17 , 0 ),
123
+ (18 , - 1 ),
124
+ (19 , - 1 ),
125
+ (20 , 0 ),
126
+ (21 , 0 ),
127
+ (22 , 0 ),
128
+ (23 , 0 ),
129
+ (24 , 10 ),
130
+ (25 , 0 ),
131
+ (26 , 0 ),
132
+ (27 , 1 ),
133
+ (28 , 0 ),
134
+ (29 , 0 ),
135
+ (30 , 0 ),
136
+ (31 , 0 ),
137
+ (32 , 0 ),
138
+ (33 , 0 ),
139
+ (34 , 0 ),
140
+ (35 , 0 ),
141
+ (36 , 0 ),
142
+ (37 , 0 ),
143
+ (38 , 0 ),
144
+ (39 , 0 ),
145
+ (40 , 0 ),
146
+ (41 , 0 ),
147
+ (42 , 0 ),
148
+ (43 , 0 ),
149
+ (44 , 0 ),
150
+ (45 , 0 ),
151
+ (46 , 0 ),
152
+ (47 , 0 ),
153
+ (48 , 0 ),
154
+ (49 , 0 ),
155
+ (50 , 0 ),
156
+ (51 , 0 ),
157
+ (52 , 0 ),
158
+ (53 , 0 ),
159
+ (54 , 0 ),
160
+ (55 , 0 ),
161
+ (56 , 0 ),
162
+ (57 , 0 ),
163
+ (58 , 0 ),
164
+ (59 , 0 ),
165
+ (60 , 0 ),
166
+ (61 , 0 ),
167
+ (62 , 0 ),
168
+ (63 , 0 ),
169
+ (64 , 0 )
170
+ ]
171
+
172
+ for i in iparm
173
+ Pardiso. set_iparm! (solver, i... )
174
+ end
175
+
176
+ for i in Base. OneTo (length (iparm))
177
+ @test Pardiso. get_iparm (solver, i) == iparm[i][2 ]
178
+ end
164
179
end
0 commit comments