59 INTEGER totmem, zplxsz, nin
60 parameter( totmem = 2000000, zplxsz = 16, nin = 11 )
62 parameter( memsiz = totmem / zplxsz )
66 CHARACTER*80 summry, usrinfo
67 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
68 $ nout, npassed, nprocs, nskipped, ntests
73 COMPLEX*16 mem( memsiz )
81 EXTERNAL blacs_exit, blacs_get, blacs_gridexit,
82 $ blacs_gridinit, blacs_pinfo, blacs_setup,
83 $ igamn2d, pdlachkieee, pdlasnbt,
pzgsepreq
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 )
120 CALL blacs_gridinit( context,
'R', 1, nprocs )
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 Hermitian 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 ' //
'Hermitian eigenvalue routine: PZHEGVX.'
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 pZGSEPtst.f).'
193 WRITE( nout, fmt = 9999 )
194 $
'IBTYPE : Generalized eigenproblem type' //
196 WRITE( nout, fmt = 9999 )
'SUB : Subtests ' //
197 $
'(see pZGSEPtst).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 pzgsepreq( 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 )
249 CALL blacs_gridexit( context )
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 $
' --------- -----' )