Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
6568 Discussions

## PARDISO solve step performances and fill-in reducing

Beginner
148 Views

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.

0 Replies