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!

 採用された回答

Richard Brown
Richard Brown 2013 年 6 月 21 日

0 投票

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 件のコメント

Ted
Ted 2013 年 6 月 21 日
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?
Richard Brown
Richard Brown 2013 年 6 月 24 日
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.
Ted
Ted 2013 年 6 月 25 日
Thank you for sharing! Did your strategy yield significant speed-up?
Richard Brown
Richard Brown 2013 年 6 月 25 日
It did -- for my problem the symbolic part was taking more than half the time
Alec Jacobson
Alec Jacobson 2016 年 12 月 5 日
Has anything changed on this front? Is it still impossible to use the symbolic factorization from symbfact for repeated solves?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

質問済み:

Ted
2013 年 6 月 20 日

コメント済み:

2016 年 12 月 5 日

Community Treasure Hunt

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

Start Hunting!

Translated by