59 INTEGER totmem, realsz, nin
60 parameter( totmem = 2000000, realsz = 4, nin = 11 )
62 parameter( memsiz = totmem / realsz )
66 CHARACTER*80 summry, usrinfo
67 INTEGER context, iam, info, isieee, maxnodes, nnocheck,
68 $ nout, npassed, nprocs, nskipped, ntests
83 $ igamn2d,
psgsepreq, pslachkieee, pslasnbt
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 pslasnbt( 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 pslachkieee( isieee,
slamch(
'O' ),
slamch(
'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: PSSYGVX.'
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 )
193 WRITE( NOUT, FMT = 9999 )
194 $ 'ibtype : generalized eigenproblem type
' //
196 WRITE( NOUT, FMT = 9999 )'sub : subtests
' //
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 PSGSEPREQ( 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.NE..AND..NE.
IF( NOUT6 NOUT0 )
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 $ ' --------- -----
' )
if(complex_arithmetic) id
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 psgsepreq(nin, mem, memsize, nout, iseed, ntests, nskipped, nnocheck, npassed, info)
subroutine psgseptst(desca, uplo, n, mattype, ibtype, subtests, thresh, order, abstol, iseed, a, copya, b, copyb, z, lda, win, wnew, ifail, iclustr, gap, iprepad, ipostpad, work, lwork, iwork, liwork, nout, info)
subroutine pssygvx(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)