Solver settings in pardiso?

Solver settings in pardiso?

Hi All,

My program have two solvers, solver A is based on Bi-CGSTAB acceleration that was developed by someone else before,  and another one (solver B) is pardiso. I found for Pardiso works fine as solver A for most of the time, but it run much slower than solver A if I use 1 or two threads.

The following settings is used in solver A:

maximum number of solver iterations:   100

solver residual tolerance: 1.0E-7

solver update tolerance: 1.0E-7.

I try to use this settings in pardiso as follows:

iparm(8) = 100      !numbers of iterative refinement steps

iparm(10) = 7       !perturbe the pivot elements with 1E-7

Is this correct? And how to set the residual tolerance?

Thanks and regards,

PS: other parameters

        iparm= 0
        iparm(1) = 1 ! no solver default
        iparm(2) = 3 ! fill-in reordering from METIS ,0-MIN DEGREE, 2-METIS, 3-OPENMP VERSION
        iparm(3) = 0 ! numbers of processors. Input the next call mkl_set_dynamic(0), mkl_set_num_threads(n);    
        iparm(4) = 0 ! 0-no iterative-direct algorithm; 10*L+1 - CGS; 10*L+2 - CG; 10^-L is the tolerance.
        iparm(5) = 0 ! no user fill-in reducing permutation
        iparm(6) = 0 ! if == 0, the array of b is replaced with the solution x.
        iparm(7) = 0 ! not in use
        iparm(9) = 0 ! not in use
        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   !check matrix error, 0-without check, 1-check
        maxfct = 1        
        mnum = 1        
        nrhs = 1        
        error = 0 ! initialize error flag       
        msglvl = 0 ! print statistical information       
        mtype = 11 ! real unsymmetric


3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

What is the problem size?


Would you please let us know how big the sparse system you're solving is?

Bi-CGSTAB is an iterative method, while PARDISO is a direct sparse solver. An iterative solver could be faster than a direct solver sometimes, especially when there is a good understanding of the initial conditions and/or a good preconditioner. Please share more details about your problem and your Bi-CGSTAB solver such that we can provide more meaningful answer.


Leave a Comment

Please sign in to add a comment. Not a member? Join today