|
1 | 1 | using LinearSolve, LinearAlgebra, SparseArrays
|
2 | 2 | using Test
|
| 3 | +import Random |
3 | 4 |
|
4 | 5 | n = 8
|
5 | 6 | A = Matrix(I,n,n)
|
|
232 | 233 | end
|
233 | 234 | end
|
234 | 235 |
|
| 236 | +@testset "Sparse Precaching" begin |
| 237 | + n = 4 |
| 238 | + Random.seed!(10) |
| 239 | + A = sprand(n,n,0.8); A2 = 2.0 .* A |
| 240 | + b1 = rand(n); b2 = rand(n) |
| 241 | + |
| 242 | + prob = LinearProblem(copy(A), copy(b1)) |
| 243 | + linsolve = init(prob,UMFPACKFactorization()) |
| 244 | + sol11 = solve(linsolve) |
| 245 | + linsolve = LinearSolve.set_b(sol1.cache,copy(b2)) |
| 246 | + sol12 = solve(linsolve) |
| 247 | + linsolve = LinearSolve.set_A(sol2.cache,copy(A2)) |
| 248 | + sol13 = solve(linsolve) |
| 249 | + |
| 250 | + prob = LinearProblem(copy(A), copy(b1)) |
| 251 | + linsolve = init(prob,KLUFactorization()) |
| 252 | + sol21 = solve(linsolve) |
| 253 | + linsolve = LinearSolve.set_b(sol1.cache,copy(b2)) |
| 254 | + sol22 = solve(linsolve) |
| 255 | + linsolve = LinearSolve.set_A(sol2.cache,copy(A2)) |
| 256 | + sol23 = solve(linsolve) |
| 257 | + |
| 258 | + linsolve = init(prob,MKLPardisoFactorize()) |
| 259 | + sol31 = solve(linsolve) |
| 260 | + linsolve = LinearSolve.set_b(sol1.cache,copy(b2)) |
| 261 | + sol32 = solve(linsolve) |
| 262 | + linsolve = LinearSolve.set_A(sol2.cache,copy(A2)) |
| 263 | + sol33 = solve(linsolve) |
| 264 | + |
| 265 | + @test sol11.u ≈ sol21.u |
| 266 | + @test sol11.u ≈ sol31.u |
| 267 | + @test sol12.u ≈ sol22.u |
| 268 | + @test sol12.u ≈ sol32.u |
| 269 | + @test sol13.u ≈ sol23.u |
| 270 | + @test sol13.u ≈ sol33.u |
| 271 | +end |
| 272 | + |
235 | 273 | end # testset
|
0 commit comments