Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
7237 Discussions

PARDISO solve step performances and fill-in reducing

Michael_M_20
Beginner
1,040 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 :

Matrix A

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 Kudos
0 Replies
Reply