Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® oneAPI Math Kernel Library
- PARDISO solve step performances and fill-in reducing

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

Michael_M_20

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

09-06-2016
02:36 AM

60 Views

PARDISO solve step performances and fill-in reducing

Hello,

In my problem, I have a constant SPD matrix to factorize (Cholesky / LL^{T}) 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

0 Replies

Topic Options

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

For more complete information about compiler optimizations, see our Optimization Notice.