59 INTEGER totmem, dblesz, nin
60 parameter( totmem = 2000000, dblesz = 8, nin = 11 )
62 parameter( memsiz = totmem / dblesz )
66 CHARACTER*80 summry, usrinfo
67 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
68 $ , npassed, nprocs, nskipped, ntests
73 DOUBLE PRECISION ( memsiz )
83 $ igamn2d,
pdgsepreq, pdlachkieee, pdlasnbt
89 CALL blacs_pinfo( iam, nprocs )
96 OPEN( unit = nin, file =
'SEP.dat', status =
'OLD' )
97 READ( nin, fmt = * )summry
102 READ( nin, fmt = 9999 )usrinfo
106 READ( nin, fmt = * )summry
107 READ( nin, fmt = * )nout
108 IF( nout.NE.0 .AND. nout.NE.6 )
109 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
110 READ( nin, fmt = * )maxnodes
111 READ( nin, fmt = * )hetero
114 IF( nprocs.LT.1 )
THEN
115 CALL blacs_setup( iam, maxnodes )
119 CALL blacs_get( -1, 0, context )
122 CALL pdlasnbt( isieee )
124 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
127 IF( ( isieee.NE.0 ) )
THEN
129 WRITE( nout, fmt = 9998 )
130 WRITE( nout, fmt = 9997 )
131 WRITE( nout, fmt = 9996 )
132 WRITE( nout, fmt = 9995 )
133 WRITE( nout, fmt = 9994 )
134 WRITE( nout, fmt = 9993 )
135 WRITE( nout, fmt = 9992 )
136 WRITE( nout, fmt = 9991 )
137 WRITE( nout, fmt = 9990 )
140 CALL pdlachkieee( isieee,
dlamch(
'O' ),
dlamch(
'U' ) )
142 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
145 IF( isieee.EQ.0 )
THEN
147 WRITE( nout, fmt = 9989 )
148 WRITE( nout, fmt = 9988 )
149 WRITE( nout, fmt = 9987 )
155 WRITE( nout, fmt = 9986 )
160 WRITE( nout, fmt = 9999 )
161 $
'SCALAPACK symmetric Eigendecomposition routines.'
162 WRITE( nout, fmt = 9999 )usrinfo
163 WRITE( nout, fmt = 9999 )
' '
164 WRITE( nout, fmt = 9999 )
'Running tests of the parallel ' //
165 $ 'generalized
' // 'symmetric eigenvalue routine:
pdsygvx.
'
166 WRITE( NOUT, FMT = 9999 )'a scaled residual check,
' //
168 WRITE( NOUT, FMT = 9999 )
169 WRITE( NOUT, FMT = 9999 )'an explanation of
the ' //
170 $ 'input/output parameters follows:
'
171 WRITE( NOUT, FMT = 9999 )'result : passed; or
' //
172 $ 'an indication of which eigen request test failed'
173 WRITE( nout, fmt = 9999 )
174 $
'N : The number of rows and columns ' //
176 WRITE( nout, fmt = 9999 )
177 $
'P : The number of process rows.'
178 WRITE( nout, fmt = 9999 )
179 $
'Q : The number of process columns.'
180 WRITE( nout, fmt = 9999 )
181 $
'NB : The size of the square blocks' //
182 $
' the matrix A is split into.'
183 WRITE( nout, fmt = 9999 )
184 $
'THRESH : If a residual value is less ' //
185 $
'than THRESH, RESULT is flagged as PASSED.'
186 WRITE( nout, fmt = 9999 )
187 $
' : the QTQ norm is allowed to exceed THRESH' //
188 $
' for those eigenvectors'
189 WRITE( nout, fmt = 9999 )
' : which could not be ' //
190 $
'reorthogonalized for lack of workspace.'
191 WRITE( nout, fmt = 9999 )
192 $
'TYP : matrix type (see pDGSEPtst.f).'
193 WRITE( nout, fmt = 9999 )
194 $
'IBTYPE : Generalized eigenproblem type' //
196 WRITE( nout, fmt = 9999 )
'SUB : Subtests ' //
197 $
'(see pDGSEPtst).f'
198 WRITE( nout, fmt = 9999 )
'CHK : The scaled residual'
199 WRITE( nout, fmt = 9999 )
' '
208 WRITE( nout, fmt = 9979 )
209 WRITE( nout, fmt = 9978 )
219 CALL pdgsepreq( nin, mem, memsiz, nout, iseed, ntests, nskipped,
220 $ nnocheck, npassed, info )
225 WRITE( nout, fmt = 9985 )ntests
226 WRITE( nout, fmt = 9984 )npassed
227 WRITE( nout, fmt = 9983 )nnocheck
228 WRITE( nout, fmt = 9982 )nskipped
229 WRITE( nout, fmt = 9981 )ntests - npassed - nskipped -
231 WRITE( nout, fmt = * )
232 WRITE( nout, fmt = * )
233 WRITE( nout, fmt = 9980 )
245 IF( nout.NE.6 .AND. nout.NE.0 )
256 9998
FORMAT(
' I am about to check to make sure that overflow' )
257 9997
FORMAT(
' is handled in the ieee default manner. If this' )
258 9996
FORMAT(
' is the last output you see, you should assume' )
259 9995
FORMAT(
' that overflow caused a floating point exception.' )
260 9994
FORMAT(
' In that case, we recommend that you add -DNO_IEEE' )
261 9993
FORMAT(
' to the CDEFS line in SLmake.inc.' )
262 9992
FORMAT(
' Alternatively, you could set CDEFS in SLmake.inc ' )
263 9991
FORMAT(
' to enable the default ieee behaviour, However, this' )
264 9990
FORMAT(
' may result in good or very bad performance.' )
265 9989
FORMAT(
' Either signed zeroes or signed infinities ' )
266 9988
FORMAT(
' work incorrectly or your system. Change your' )
267 9987
FORMAT(
' SLmake.inc as suggested above.' )
269 9986
FORMAT(
' Your system appears to handle ieee overflow.' )
271 9985
FORMAT(
'Finished ', i6,
' tests, with the following results:' )
272 9984
FORMAT( i5,
' tests completed and passed residual checks.' )
273 9983
FORMAT( i5,
' tests completed without checking.' )
274 9982
FORMAT( i5,
' tests skipped for lack of memory.' )
275 9981
FORMAT( i5,
' tests completed and failed.' )
276 9980
FORMAT(
'END OF TESTS.' )
277 9979
FORMAT( ' n nb p q typ ibtype sub wall cpu
',
279 9978 FORMAT( ' ----- --- --- --- --- ------ --- -------- --------
',
280 $ ' --------- -----' )
end diagonal values have been computed in the(sparse) matrix id.SOL
double precision function dlamch(cmach)
DLAMCH
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine blacs_gridexit(cntxt)
subroutine pdgsepreq(nin, mem, memsize, nout, iseed, ntests, nskipped, nnocheck, npassed, info)
subroutine pdsygvx(ibtype, jobz, range, uplo, n, a, ia, ja, desca, b, ib, jb, descb, vl, vu, il, iu, abstol, m, nz, w, orfac, z, iz, jz, descz, work, lwork, iwork, liwork, ifail, iclustr, gap, info)