How can I use "symbfact" to speed up several consecutive Cholesky factorizations?

Hi all,
I just came across the "symbfact" command. It seems powerful, but I'm wondering exactly how take advantage of it. I need to do several hundred consecutive Cholesky factorizations of matrices that have the same sparsity structure (different entries). Symbfact tells me the sparsity structure of the resulting Cholesky factors, but how can I take advantage of that?
>> % For nxn Q, n~20000
>> L = chol(Q);
>> S = symbfact(L);
>> % How can I use S to efficiently calculate subsequent L's?
Thanks!

 Accepted Answer

You can't (unless something has changed recently). When I had to do this, I ended up working with the C code in CSparse directly.

5 Comments

That seems strange! It seems like the main purpose of "symbfact" is my application. Is it good for anything then?
When you worked with CSparse, did you end up using the template sparsity structure of L to customize the recursively defined formulas for L's entries? Formulas here: http://rosettacode.org/wiki/Cholesky_decomposition
That's the only other strategy I can think of, but it's very tedious and challenging. What did you do?
I split the function cs_cholsol into two -- in the distributed version it performs symbolic and numerical factorisation, and then the triangular solves all in the one function.
I took out the symbolic step, and added the css object as an input parameter so that you can just compute it once.
Thank you for sharing! Did your strategy yield significant speed-up?
It did -- for my problem the symbolic part was taking more than half the time
Has anything changed on this front? Is it still impossible to use the symbolic factorization from symbfact for repeated solves?

Sign in to comment.

More Answers (0)

Asked:

Ted
on 20 Jun 2013

Commented:

on 5 Dec 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!