Skip to content

Commit 716973b

Browse files
committed
pre-alloc all multiplications
1 parent 37d9576 commit 716973b

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/multilevel.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,16 +186,19 @@ function __solve!(x, ml, v::V, b, lvl)
186186
mul!(res, A, x)
187187
res .= b .- res
188188

189-
coarse_b = ml.levels[lvl].R * res
190-
coarse_x = zeros(eltype(coarse_b), size(coarse_b))
189+
coarse_b = ml.workspace.coarse_bs[lvl]
190+
mul!(coarse_b, ml.levels[lvl].R, res)
191191

192+
coarse_x = ml.workspace.coarse_xs[lvl]
193+
coarse_x .= 0
192194
if lvl == length(ml.levels)
193195
ml.coarse_solver(coarse_x, coarse_b)
194196
else
195197
coarse_x = __solve!(coarse_x, ml, v, coarse_b, lvl + 1)
196198
end
197199

198-
x .+= ml.levels[lvl].P * coarse_x
200+
mul!(res, ml.levels[lvl].P, coarse_x)
201+
x .+= res
199202

200203
ml.postsmoother(A, x, b)
201204

0 commit comments

Comments
 (0)