This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Sparse solve vs. back substitution

Tags: None
(comma "," separated)
zoharl
Registered Member
Posts
55
Karma
0
OS

Sparse solve vs. back substitution

Fri Nov 16, 2012 7:55 am
Hi,

I have a sparse linear system:

Ax = b

Where A is SPD of size 1e6 x 1e6, and each row contains 7 non-zeros on average.

1. SimplicialLLT compute() failed, while SimplicialLDLT was successful. Is there a reason for this? I can supply an example of A, in any format you like.

2. I am wondering how the solve() works. If I remember correctly it is some kind of symbolic solver, which holds the permutation of the columns, and does some kind of Gauss elimination.
I was wondering how it would compete, in terms of performance, with a back substitution algorithm. I am assuming it's a question of sparsity (the decomposition isn't sparse) vs. parallelizability.

Thanks
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
1. it's probably because your matrix is numerically not SPD, and a negative coefficient appear on the diagonal... If you could send me a zipped file of your matrix in Matrix Market format, we could check, and even use it in our accuracy/performance regression tests.

2. The matrix A is factorized as P' L D L' P by compute() where the permutation P is here to reduce the fill-in in L. Then solving Ax=b applies the permutation on b, and back-substitutions... : x = (P' (L-' (D^-1 (L^-1 (P b) ) ) ) )
zoharl
Registered Member
Posts
55
Karma
0
OS
1. I'm sure I double checked it, yet I check it again and now it's not positive definite. Sorry about that. Nevertheless SimplicialLDLT didn't complain.

2. Ho, I wasn't aware that it does back substitution.

Thanks


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Yahoo [Bot]