53 INTEGER totmem, cplxsz, nin
54 parameter( totmem = 2000000, cplxsz = 8, nin = 11 )
56 parameter( memsiz = totmem / cplxsz )
60 CHARACTER*80 summry, usrinfo
61 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
62 $ , npassed, nprocs, nskipped, ntests
83 CALL blacs_pinfo( iam, nprocs )
90 OPEN( unit = nin, file =
'SEP.dat', status =
'OLD' )
91 READ( nin, fmt = * )summry
96 READ( nin, fmt = 9999 )usrinfo
100 READ( nin, fmt = * )summry
101 READ( nin, fmt = * )nout
102 IF( nout.NE.0 .AND. nout.NE.6 )
103 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
104 READ( nin, fmt = * )maxnodes
105 READ( nin, fmt = * )hetero
108 IF( nprocs.LT.1 )
THEN
109 CALL blacs_setup( iam, maxnodes )
113 CALL blacs_get( -1, 0, context )
116 CALL pslasnbt( isieee )
118 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
121 IF( ( isieee.NE.0 ) )
THEN
123 WRITE( nout, fmt = 9998 )
124 WRITE( nout, fmt = 9997 )
125 WRITE( nout, fmt = 9996 )
126 WRITE( nout, fmt = 9995 )
127 WRITE( nout, fmt = 9994 )
128 WRITE( nout, fmt = 9993 )
129 WRITE( nout, fmt = 9992 )
130 WRITE( nout, fmt = 9991 )
131 WRITE( nout, fmt = 9990 )
134 CALL pslachkieee( isieee,
slamch(
'O' ),
slamch(
'U' ) )
136 CALL igamn2d( context,
'a',
' ', 1, 1, isieee, 1, 1, 1, -1, -1,
139 IF( isieee.EQ.0 )
THEN
141 WRITE( nout, fmt = 9989 )
142 WRITE( nout, fmt = 9988 )
143 WRITE( nout, fmt = 9987 )
149 WRITE( nout, fmt = 9986 )
154 WRITE( nout, fmt = 9999 )
155 $
'SCALAPACK Hermitian Eigendecomposition routines.'
156 WRITE( nout, fmt = 9999 )usrinfo
157 WRITE( nout, fmt = 9999 )
' '
158 WRITE( nout, fmt = 9999 )
'Running tests of the parallel ' //
159 $
'generalized ' //
'Hermitian eigenvalue routine: PCHEGVX.'
160 WRITE( nout, fmt = 9999 )
'A scaled residual check, ' //
162 WRITE( nout, fmt = 9999 )
163 WRITE( nout, fmt = 9999 )
'An explanation of the ' //
164 $
'input/output parameters follows:'
165 WRITE( nout, fmt = 9999 )
'RESULT : passed; or ' //
166 $
'an indication of which eigen request test failed'
167 WRITE( nout, fmt = 9999 )
168 $
'N : The number of rows and columns ' //
170 WRITE( nout, fmt = 9999 )
171 $
'P : The number of process rows.'
172 WRITE( nout, fmt = 9999 )
173 $
'Q : The number of process columns.'
174 WRITE( nout, fmt = 9999 )
175 $
'NB : The size of the square blocks' //
176 $
' the matrix A is split into.'
177 WRITE( nout, fmt = 9999 )
178 $
'THRESH : If a residual value is less ' //
179 $
'than THRESH, RESULT is flagged as PASSED.'
180 WRITE( nout, fmt = 9999 )
181 $
' : the QTQ norm is allowed to exceed THRESH' //
182 $
' for those eigenvectors'
183 WRITE( nout, fmt = 9999 )
' : which could not be ' //
184 $
'reorthogonalized for lack of workspace.'
185 WRITE( nout, fmt = 9999 )
186 $
'TYP : matrix type (see pCGSEPtst.f).'
188 $
'IBTYPE : Generalized eigenproblem type' //
190 WRITE( nout, fmt = 9999 )
'SUB : Subtests ' //
191 $
'(see pCGSEPtst).f'
192 WRITE( nout, fmt = 9999 )
'CHK : The scaled residual'
193 WRITE( nout, fmt = 9999 )
' '
202 WRITE( nout, fmt = 9979 )
203 WRITE( nout, fmt = 9978 )
213 CALL pcgsepreq( nin, mem, memsiz, nout, iseed, ntests, nskipped,
214 $ nnocheck, npassed, info )
219 WRITE( nout, fmt = 9985 )ntests
220 WRITE( nout, fmt = 9984 )npassed
221 WRITE( nout, fmt = 9983 )nnocheck
222 WRITE( nout, fmt = 9982 )nskipped
223 WRITE( nout, fmt = 9981 )ntests - npassed - nskipped -
225 WRITE( nout, fmt = * )
226 WRITE( nout, fmt = * )
227 WRITE( nout, fmt = 9980 )
239 IF( nout.NE.6 .AND. nout.NE.0 )
250 9998
FORMAT( ' i am about to check to make sure that overflow
' )
251 9997 FORMAT( ' is handled in
the ieee default manner.
If this
' )
252 9996 FORMAT( ' is
the last output you see, you should assume
' )
253 9995 FORMAT( ' that overflow caused a floating point exception.
' )
254 9994 FORMAT( ' in that
case, we recommend that you add -dno_ieee
' )
255 9993 FORMAT( ' to
the cdefs line in slmake.inc.
' )
256 9992 FORMAT( ' alternatively, you could set cdefs in slmake.inc
' )
257 9991 FORMAT( ' to enable
the default ieee behaviour, however, this
' )
258 9990 FORMAT( ' may result in good or very bad performance.
' )
259 9989 FORMAT( ' either signed zeroes or signed infinities
' )
260 9988 FORMAT( ' work incorrectly or your system. change your
' )
261 9987 FORMAT( ' slmake.inc as suggested above.
' )
263 9986 FORMAT( ' your system appears to handle ieee overflow.
' )
265 9985 FORMAT( 'finished
', I6, ' tests, with
the following results:
' )
266 9984 FORMAT( I5, ' tests completed and passed residual checks.
' )
267 9983 FORMAT( I5, ' tests completed without checking.
' )
268 9982 FORMAT( I5, ' tests skipped
for lack of memory.
' )
269 9981 FORMAT( I5, ' tests completed and failed.
' )
270 9980 FORMAT( 'END OF TESTS.
' )
271 9979 FORMAT( ' N NB P Q TYP IBTYPE SUB WALL CPU
',
273 9978 FORMAT( ' ----- --- --- --- --- ------ --- -------- --------
',
274 $ ' --------- -----
' )
end diagonal values have been computed in the(sparse) matrix id.SOL
real function slamch(cmach)
SLAMCH
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine blacs_gridexit(cntxt)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine pcgsepreq(nin, mem, memsize, nout, iseed, ntests, nskipped, nnocheck, npassed, info)