45 INTEGER totmem, dblesz, nin
46 parameter( totmem = 100000000, dblesz = 8, nin = 11 )
48 parameter( memsiz = totmem / dblesz )
52 CHARACTER*80 summry, usrinfo
53 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
54 $ nout, npassed, nprocs, nskipped, ntests
59 DOUBLE PRECISION mem( memsiz )
67 EXTERNAL blacs_exit, blacs_get, blacs_gridexit,
68 $ blacs_gridinit, blacs_pinfo, blacs_setup,
69 $ igamn2d, pdlachkieee, pdlasnbt,
pdseprreq
75 CALL blacs_pinfo( iam, nprocs )
82 OPEN( unit = nin, file =
'SEPR.dat', status =
'OLD' )
83 READ( nin, fmt = * )summry
88 READ( nin, fmt = 9999 )usrinfo
92 READ( nin, fmt = * )summry
93 READ( nin, fmt = * )nout
94 IF( nout.NE.0 .AND. nout.NE.6 )
95 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
96 READ( nin, fmt = * )maxnodes
97 READ( nin, fmt = * )hetero
100 IF( nprocs.LT.1 )
THEN
101 CALL blacs_setup( iam, maxnodes )
105 CALL blacs_get( -1, 0, context )
106 CALL blacs_gridinit( context,
'R', 1, nprocs )
108 CALL pdlasnbt( isieee )
110 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
113 IF( ( isieee.NE.0 ) )
THEN
115 WRITE( nout, fmt = 9997 )
116 WRITE( nout, fmt = 9996 )
117 WRITE( nout, fmt = 9995 )
120 CALL pdlachkieee( isieee,
dlamch(
'O' ),
dlamch(
'U' ) )
122 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
125 IF( isieee.EQ.0 )
THEN
130 WRITE( nout, fmt = 9986 )
136 WRITE( nout, fmt = 9999 )
137 $
'Test ScaLAPACK symmetric eigendecomposition routine.'
138 WRITE( nout, fmt = 9999 )usrinfo
139 WRITE( nout, fmt = 9999 )
' '
140 WRITE( nout, fmt = 9999 )
'Running tests of the parallel ' //
141 $
'symmetric eigenvalue routine: PDSYEVR.'
142 WRITE( nout, fmt = 9999 )
'The following scaled residual ' //
143 $
'checks will be computed:'
144 WRITE( nout, fmt = 9999 )
' ||AQ - QL|| ' //
145 $
'/ ((abstol + ||A|| * eps) * N)'
146 WRITE( nout, fmt = 9999 )
' ||Q^T*Q - I|| ' //
'/ (N * eps)'
147 WRITE( nout, fmt = 9999 )
148 WRITE( nout, fmt = 9999 )
'An explanation of the ' //
149 $
'input/output parameters follows:'
150 WRITE( nout, fmt = 9999 )
'RESULT : passed; or ' //
151 $
'an indication of which eigen request test failed'
152 WRITE( nout, fmt = 9999 )
153 $
'N : The number of rows and columns ' //
155 WRITE( nout, fmt = 9999 )
156 $
'P : The number of process rows.'
157 WRITE( nout, fmt = 9999 )
158 $
'Q : The number of process columns.'
159 WRITE( nout, fmt = 9999 )
160 $
'NB : The size of the square blocks' //
161 $
' the matrix A is split into.'
162 WRITE( nout, fmt = 9999 )
163 $
'THRESH : If a residual value is less ' //
164 $
'than THRESH, RESULT = PASSED.'
165 WRITE( nout, fmt = 9999 )
166 $
'TYP : matrix type (see PDSEPRTST).'
167 WRITE( nout, fmt = 9999 )
'SUB : Subtests (Y/N).'
168 WRITE( nout, fmt = 9999 )
'WALL : Wallclock time.'
169 WRITE( nout, fmt = 9999 )
'CPU : CPU time.'
170 WRITE( nout, fmt = 9999 )
'CHK : ||AQ - QL|| ' //
171 $
'/ ((abstol + ||A|| * eps) * N)'
172 WRITE( nout, fmt = 9999 )
'QTQ : ||Q^T*Q - I||/ (N * eps)'
173 WRITE( nout, fmt = 9999 )
174 $
' : when the adjusted QTQ norm exceeds THRESH',
176 WRITE( nout, fmt = 9999 )
177 $
' otherwise the true QTQ norm is printed.'
178 WRITE( nout, fmt = 9999 )
179 $
' : If more than one test is done, CHK and QTQ '
180 WRITE( nout, fmt = 9999 )
181 $
' are the max over all eigentests performed.'
182 WRITE( nout, fmt = 9999 )
183 $
'TEST : EVR - testing PDSYEVR'
184 WRITE( nout, fmt = 9999 )
' '
193 WRITE( nout, fmt = 9979 )
194 WRITE( nout, fmt = 9978 )
204 CALL pdseprreq( hetero, nin, mem, memsiz, nout, iseed, ntests,
205 $ nskipped, nnocheck, npassed, info )
210 WRITE( nout, fmt = 9985 )ntests
211 WRITE( nout, fmt = 9984 )npassed
212 WRITE( nout, fmt = 9983 )nnocheck
213 WRITE( nout, fmt = 9982 )nskipped
214 WRITE( nout, fmt = 9981 )ntests - npassed - nskipped -
216 WRITE( nout, fmt = * )
217 WRITE( nout, fmt = * )
218 WRITE( nout, fmt = 9980 )
228 IF( nout.NE.6 .AND. nout.NE.0 )
232 CALL blacs_gridexit( context )
238 9997
FORMAT(
'Check if overflow is handled in ieee default manner.' )
239 9996
FORMAT(
'If this is the last output you see, you should assume')
240 9995
FORMAT(
'that overflow caused a floating point exception.' )
242 9986
FORMAT(
'Test ok. The system appears to handle ieee overflow.' )
244 9985
FORMAT(
'Finished ', i6,
' tests, with the following results:' )
245 9984
FORMAT( i5,
' tests completed and passed residual checks.' )
246 9983
FORMAT( i5,
' tests completed without checking.' )
247 9982
FORMAT( i5,
' tests skipped for lack of memory.' )
248 9981
FORMAT( i5,
' tests completed and failed.' )
249 9980
FORMAT(
'END OF TESTS.' )
250 9979
FORMAT(
' N NB P Q TYP SUB WALL CPU ',
251 $
' CHK QTQ CHECK TEST' )
252 9978
FORMAT(
' ----- --- --- --- --- --- -------- --------',
253 $
' --------- --------- ----- ----' )