Software Archive
Read-only legacy content
17061 Discussions

ARPACK compiled with CVF

hbell
Beginner
358 Views
I compiled and linked the large symmetric matrix eigensolver routine ARPACK (see http://www.caam.rice.edu/software/ARPACK/) using CVF. The only tricks I remember were increasing the stack size to 2MB or so, replacing the ETIME routine with one that used the DATE_AND_TIME intrinsic subroutine, and replacing the DLAMCH routine for determining machine precision parameters with one that used the "Numerical Recipes, The Art of Scientic Computing" (by W. T. Vetterling et al, second edition) MACHAR subroutine. MACHAR and DLAMCH equivalencies were:
floating point precision: DLAMCH( 'E' ) = 10th argument of MACHAR.
smallest number representable at full precision: DLAMCH( 'S' ) = 12th argument of MACHAR.
base: DLAMCH( 'B' ) = 2.D0
I guess I could also have used the CVF intrinsic routines EPSILON and TINY in place of DLAMCH( 'E' ) and DLAMCH( 'S' ) respectively.

Does anybody know where I could find some matrix/eigenvalue/eigenvector test sets to see how well this works?

Harry Bell
0 Kudos
2 Replies
hbell
Beginner
358 Views
Upon further examination I discovered that the reason DLAMCH was not working properly was due to the CVF switch /fltconsistency not being set ("Enable Floating Point Consistency" from the Project, Settings, Fortran Tab, category Floating Point). Once I set this switch the subroutine returned DLAMCH ('S') identical to the TINY intrinsic CVF subroutine. Interestingly, it gave an epsilon value DLAMCH('E') equal to half the EPSILON intrinsic CVF subroutine. Might the intrinsic subroutine EPSILON be incorrect?
0 Kudos
Steven_L_Intel1
Employee
358 Views
No, CVF is fine - but these routines that try to compute at run-time the various characteristics of the floating point type fall over on the X86 architecture. You can try compiling them without optimization and sometimes they'll return the right values, but I suggest you look here instead.

Steve
0 Kudos
Reply