- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
In my problem, I have a constant SPD matrix to factorize (Cholesky / LLT) and several thousands of solve to do. So I'm more concerned about solve performance since the ordering and factorize steps are done only one time.
For example, I have a 4595x4595 matrix (MatrixMarket file attached to this message) with 58231 non-zeros values :
When I use MKL PARDISO with fill-in reducing mode 0 (minimum degree method), 2500 solves are done in 4.59s with 251271 non-zeros in L matrix.
When I use fill-in reducing mode 2 (METIS), 2500 solves are done in 4.95s with 241820 non-zeros in L matrix.
I have tried Eigen 3 library with the same matrix, 2500 solves are done in 4.28s (unable to retrieve non-zeros count).
I have two questions :
1) Is it normal that the solve step is slower with METIS re-ordering while there is less non-zeros values in L matrix ?
2) It seems that re-ordering step are not optimal with both MKL methods (for example SCILAB returns 223228 non-zeros). Is there a way to reduce fill-in other than iparm(2) ?
Factorization call :
void* pt = ...; //handle int maxfct=1; int mnum=1; int mtype=2; int phase=12; int n=4595; int nrhs=0; int msglvl=0; int error=-1; int* perm=NULL; double* a = ...; //values int* ia = ...; //rows int* ja = ...; //columns int iparm[] = {1,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; pardiso(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, NULL, &nrhs, iparm, &msglvl, NULL, NULL, &error);
Thank you.
Link Copied

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page