- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page