Closed
Description
Description
In #1374 and #1382 we came up with a few very nice cases were we can optimize graphs with solve(A, b)
by decomposing A
once (in those cases using LU decomposition), then applying solve against several different right-hand sides. Those PRs applied to the case where assume_a=gen
or tridiagonal
. Looking back though, we should have started with the case where assume_a=pos
, because in this case, the relevant decomposition is just Cholesky
.
We can apply the same suite of decompose-and-reuse rewrites as in the gen
and tridiagonal
cases (in Blockwise, gradient, and scan) by just replacing solve(A, b, assume_a='pos')
with cho_solve((cholesky(A), True), b)
, the exact same way we rewrite to lu_solve(lu_factor(A), b)
.