Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

CXML vs. MKL : Sparse Solver Routines

ceo012
Beginner
373 Views
CXML : Compaq Extended Math. Lib. (direct solver : DSSKYF)
MKL: Intel Math. Kernel Lib. (direct solver : PARDISO)

I am using two direct solver (CXML and MKL) to solve a system of linear equations (Ax=b).
The properties of A matrix are provided below

1. 100 by 100 symmetric
2. positive definite
3. ill-conditioned (condition number 1.E+100)
4. determinant : infinite

After solving both solvers, compare residual norm ||R||= b Ax* (x* represents solver solutions)
CXML is very small (1E-9) but MKL is too big (239).
Here is my code (Intel Visual Fortran v11 11.0.072

mtype = 2 ! real and SPD
! initialize PARDISO (solve inverse matrix )
call pardisoinit(pt, mtype, iparm)
iparm(1) = 1 ! no solver default
iparm(2) = 0 !2 ! fill-in reordering from METIS
iparm(3) = omp_get_max_threads() ! number of processors
iparm(7) = 16 ! default logical fortran unit number for output
iparm(8) = 20 ! numbers of iterative refinement steps
msglvl = 0 ! don't print statistical information

! analysis, symbolic factorization, numerical factorization and solve
phase = 13
call pardiso(pt, maxfct, mnum, mtype, phase, ndim, A, iA, jA, &
idum, nrhs, iparm, msglvl, glb_force, x, error)


I dont know where I made a mistake
Is there any problem in my code?
Thanks

0 Kudos
1 Reply
ArturGuzik
Valued Contributor I
373 Views
Quoting - ceo012
3. ill-conditioned (condition number 1.E+100)
4. determinant : infinite

The mistake you're making is trying to solve ill-conditioned problems using "standard" algorithm. SVD is what you want.

A.
0 Kudos
Reply