Efficiency of Pardiso

Efficiency of Pardiso

Hi All,

Has anybody compared the efficiency of Pardiso with some other solvers using ILU preconditioner?

In my test, Pardiso takes much more time than the solver using ILU preconditioner. For example, the matrix is 405000*405000 with 18135900 non-zero entries, Pardiso takes 30 seconds to solver it while ILU preconditioner solver (e.g., PETSc) only takes about 0.6 seconds, both using 1 processor. I have tried serveral parameters, but the efficiency is still very bad. Pardiso is designed as a high efficiency solver but what I get is just so so. I wonder if anything is wrong is my codes, the parameters used is as follows:

      iparm(2) = 3 ! fill-in reordering from METIS
      iparm(3) = 0 ! numbers of processors      
      iparm(4) = 0 ! no iterative-direct algorithm
      iparm(5) = 0 ! 0 no user fill-in reducing permutation
      iparm(6) = 0 ! =0 solution on the first n compoments of x
      iparm(7) = 0 ! not in use
      iparm(8) = 9 ! numbers of iterative refinement steps, default 9
      iparm(9) = 0 ! not in use
      iparm(10) = 13 ! perturbe the pivot elements,default 13 with 1E-13
      iparm(11) = 1 ! use nonsymmetric permutation and scaling MPS
      iparm(12) = 0 ! not in use
      iparm(13) = 1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric)
      iparm(14) = 0 ! Output: number of perturbed pivots
      iparm(15) = 0 ! not in use
      iparm(16) = 0 ! not in use
      iparm(17) = 0 ! not in use
      iparm(18) = -1 ! Output: number of nonzeros in the factor LU
      iparm(19) = -1 ! Output: Mflops for LU factorization
      iparm(20) = 0 ! Output: Numbers of CG Iterations
      iparm(27) = 0 ! 1: check matrix error

...

phase = 11 ! only reordering and symbolic factorization             
CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a_std, ia, ja_std, idum, nrhs, iparm, msglvl, ddum, ddum, error)

phase = 22 ! only factorization
CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a_std, ia, ja_std, idum, nrhs, iparm, msglvl, ddum, ddum, error)

phase = 33 ! only substitution
CALL pardiso (pt, maxfct, mnum, mtype, phase, n, a_std, ia, ja_std, idum, nrhs, iparm, msglvl, b, x, error)

Is it possible to improve this efficiency?

Thanks and regards,

Daniel

publicaciones de 6 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

Hi Daniel,

Could I ask you to share a kind of reproducer (including matrix type , OS, processor)? We would like to reproduce the exactly the same way as you and see where the problem is.

If the input matrix is private, please send private message to me.

Best Regards,
Ying

Cita:

Ying H (Intel) escribió:

Hi Daniel,

Could I ask you to share a kind of reproducer (including matrix type , OS, processor)? We would like to reproduce the exactly the same way as you and see where the problem is.

If the input matrix is private, please send private message to me.

Best Regards,
Ying

Hi Ying,

Thanks for the quick reply, here is the informations.

Matrix type: real unsymmetric sparse matrix, size 405000*405000 with 18135900 non-zero entries.
OS: Windows 7 X64 Pro.
Processor: Intel Xeon E5-2620 2.0GHz, 6cores/12threads
Memory: 16GB
Compiler: Intel Parallel Studio XE 2013, with intel composer xe 2013 update 5

File format in the attachment.
1. The fist value in a.txt, b.txt, ia.txt and ja.txt is the number of data in this file.
2. x_pardiso.txt is the result solved by Pardiso, x_PETSc.txt and x_other.txt are the results solved by PETSc and another solver with ILU preconditioning.

All the results are correct, but the efficiency are quite different, Pardiso is much slower than the other two.

Thanks,

Daniel

The following error occurred when I try to upload the matrix file matrix.7z.

    The specified file temporary://p1853bo6fc11ks1bj1157r1944d7h4.tmp could not be copied, because no file by that name exists. Please check that you supplied the correct filename.
    The specified file . could not be uploaded. Only files with the following extensions are allowed: 7z avi bmp bz2 c cpp cxx doc docx f for f90 gif gz gzip h i ico icproj img jpeg jpg log m4v mov mp3 mp4 mpeg odp ods odt ogg pdf png pps ppt pptx sln tar tbz2 tgz txt vcproj vcxproj wmv xls xlsx zip.

Adjuntos: 

AdjuntoTamaño
Descargar matrix2.7z56.77 MB

Hi Daniel,

Long time no see! :) PTSc is an iterative solver whereas PARDISO direct one. It is not correct to compare it without additional parameters for matrix - for example iterative methods with ILU preconditioned for good conditioner number converge faster than direct on the other hand direct return near exact solution. For ill condition matrix situation change a bit - converge of iterative solver become poor and direct method return solution quicker (its speed doesn't depend on condition number) but residual can be bad. And, of course, these reasoning depend on preconditioner - so that's a hard to compare this 2 absolutely different approach of solving system of linear equation. 

Thanks,

Alexander Kalinkin

Cita:

Alexander Kalinkin (Intel) escribió:

Hi Daniel,

Long time no see! :) PTSc is an iterative solver whereas PARDISO direct one. It is not correct to compare it without additional parameters for matrix - for example iterative methods with ILU preconditioned for good conditioner number converge faster than direct on the other hand direct return near exact solution. For ill condition matrix situation change a bit - converge of iterative solver become poor and direct method return solution quicker (its speed doesn't depend on condition number) but residual can be bad. And, of course, these reasoning depend on preconditioner - so that's a hard to compare this 2 absolutely different approach of solving system of linear equation. 

Thanks,

Alexander Kalinkin

Hi Alexander,

This makes sense. Most of the matrices are not of good conditioner number but iterative methods with ILU preconditing are usually faster for my case. I do have some ill-condition matrices that Pardiso runs faster than other solvers but not significant. Maybe for my case, I think iterative methods with ILU preconditing is a better choise.

Thanks so much,

Daniel

Deje un comentario

Por favor inicie sesión para agregar un comentario. ¿No es socio? Únase ya