1 SUBROUTINE pzevcinfo( SUMMRY, NOUT, NMAT, NVAL, LDNVAL, NNB,
2 $ NBVAL, LDNBVAL, NGRIDS, PVAL, LDPVAL, QVAL,
3 $ LDQVAL, THRESH, WORK, IAM, NPROCS )
11 CHARACTER*( * ) SUMMRY
12 INTEGER IAM, LDNBVAL, LDNVAL, LDPVAL, LDQVAL, NGRIDS,
13 $ nmat, nnb, nout, nprocs
17 INTEGER NBVAL( LDNBVAL ), NVAL( LDNVAL ),
18 $ PVAL( LDPVAL ), QVAL( LDQVAL ), WORK( * )
108 PARAMETER ( NIN = 11 )
121 DOUBLE PRECISION PDLAMCH
136 OPEN( nin, file = 'evc.dat
', STATUS = 'old
' )
137 READ( NIN, FMT = * )SUMMRY
142 READ( NIN, FMT = 9999 )USRINFO
146 READ( NIN, FMT = * )SUMMRY
147 READ( NIN, FMT = * )NOUT
148.NE..AND..NE.
IF( NOUT0 NOUT6 )
149 $ OPEN( NOUT, FILE = SUMMRY, STATUS = 'unknown
' )
155 READ( NIN, FMT = * )NMAT
156.LT..OR..GT.
IF( NMAT1 NMATLDNVAL ) THEN
157 WRITE( NOUT, FMT = 9994 )'n
', LDNVAL
160 READ( NIN, FMT = * )( NVAL( I ), I = 1, NMAT )
164 READ( NIN, FMT = * )NNB
165.GT.
IF( NNBLDNBVAL ) THEN
166 WRITE( NOUT, FMT = 9994 )'nb
', LDNBVAL
169 READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
172.LT.
IF( NBVAL( I )6 ) THEN
173 WRITE( NOUT, FMT = 9992 )NBVAL( I )
180 READ( NIN, FMT = * )NGRIDS
181.LT..OR..GT.
IF( NGRIDS1 NGRIDSLDPVAL ) THEN
182 WRITE( NOUT, FMT = 9994 )'grids
', LDPVAL
184.GT.
ELSE IF( NGRIDSLDQVAL ) THEN
185 WRITE( NOUT, FMT = 9994 )'grids
', LDQVAL
191 READ( NIN, FMT = * )( PVAL( I ), I = 1, NGRIDS )
192 READ( NIN, FMT = * )( QVAL( I ), I = 1, NGRIDS )
196 READ( NIN, FMT = * )THRESH
205.LT.
IF( NPROCS1 ) THEN
208 NPROCS = MAX( NPROCS, PVAL( I )*QVAL( I ) )
210 CALL BLACS_SETUP( IAM, NPROCS )
216 CALL BLACS_GET( -1, 0, ICTXT )
217 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
221 EPS = PDLAMCH( ICTXT, 'eps
' )
225 CALL SGEBS2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1 )
230 CALL IGEBS2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3 )
233 CALL ICOPY( NMAT, NVAL, 1, WORK( I ), 1 )
235 CALL ICOPY( NNB, NBVAL, 1, WORK( I ), 1 )
237 CALL ICOPY( NGRIDS, PVAL, 1, WORK( I ), 1 )
239 CALL ICOPY( NGRIDS, QVAL, 1, WORK( I ), 1 )
241 CALL IGEBS2D( ICTXT, 'all
', ' ', I, 1, WORK, I )
245 WRITE( NOUT, FMT = 9999 )
246 $ 'scalapack nonsymmetric eigenvector calculation.'
247 WRITE( nout, fmt = 9999 )usrinfo
248 WRITE( nout, fmt = * )
249 WRITE( nout, fmt = 9999 )
'Tests of the parallel ' //
250 $
'complex double precision eigenvector calculation.'
251 WRITE( nout, fmt = 9999 )
'The following scaled residual ' //
252 $
'checks will be computed:'
253 WRITE( nout, fmt = 9999 )
254 $
' Residual = max( ||T*R-R*D||/(||H||*eps*N)' //
255 $
' , ||T^H*L-L*D^H||/(||H||*eps*N) )'
256 WRITE( nout, fmt = 9999 )
257 $
' Normalization residual = max(max_j(max|R(j)|-1),' //
258 $
' max_j(max|L(j)|-1))/(eps*N)'
259 WRITE( nout, fmt = 9999 )
'The matrix A is randomly ' //
260 $
'generated for each test.'
261 WRITE( nout, fmt = * )
262 WRITE( nout, fmt = 9999 )
'An explanation of the input/output '
263 $ //
'parameters follows:'
264 WRITE( nout, fmt = 9999 )
265 $
'TIME : Indicates whether WALL or ' //
266 $
'CPU time was used.'
268 WRITE( nout, fmt = 9999 )
269 $
'N : The number of columns in the ' //
'matrix A.'
270 WRITE( nout, fmt = 9999 )
271 $
'NB : The size of the square blocks the' //
272 $
' matrix A is split into.'
273 WRITE( nout, fmt = 9999 )
274 $
'P : The number of process rows.'
275 WRITE( nout, fmt = 9999 )
276 $
'Q : The number of process columns.'
277 WRITE( nout, fmt = 9999 )
278 $
'THRESH : If a residual value is less than' //
279 $
' THRESH, CHECK is flagged as PASSED'
280 WRITE( nout, fmt = 9999 )
281 $
'NEP time : Time in seconds to decompose the ' // ' matrix
'
282 WRITE( NOUT, FMT = 9999 )'mflops : rate of execution
'
283 WRITE( NOUT, FMT = * )
284 WRITE( NOUT, FMT = 9999 )
285 $ 'the following
parameter values will be used:
'
286 WRITE( NOUT, FMT = 9996 )'n
',
287 $ ( NVAL( I ), I = 1, MIN( NMAT, 10 ) )
289 $ WRITE( NOUT, FMT = 9997 )( NVAL( I ), I = 11, NMAT )
290 WRITE( NOUT, FMT = 9996 )'nb
',
291 $ ( NBVAL( I ), I = 1, MIN( NNB, 10 ) )
293 $ WRITE( NOUT, FMT = 9997 )( NBVAL( I ), I = 11, NNB )
294 WRITE( NOUT, FMT = 9996 )'p
',
295 $ ( PVAL( I ), I = 1, MIN( NGRIDS, 10 ) )
297 $ WRITE( NOUT, FMT = 9997 )( PVAL( I ), I = 11, NGRIDS )
298 WRITE( NOUT, FMT = 9996 )'q
',
299 $ ( QVAL( I ), I = 1, MIN( NGRIDS, 10 ) )
301 $ WRITE( NOUT, FMT = 9997 )( QVAL( I ), I = 11, NGRIDS )
302 WRITE( NOUT, FMT = * )
303 WRITE( NOUT, FMT = 9995 )EPS
304 WRITE( NOUT, FMT = 9998 )THRESH
311 $ CALL BLACS_SETUP( IAM, NPROCS )
316 CALL BLACS_GET( -1, 0, ICTXT )
317 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
321 EPS = PDLAMCH( ICTXT, 'eps
' )
323 CALL SGEBR2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1, 0, 0 )
324 CALL IGEBR2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3, 0, 0 )
329 I = NMAT + NNB + 2*NGRIDS
330 CALL IGEBR2D( ICTXT, 'all
', ' ', I, 1, WORK, I, 0, 0 )
332 CALL ICOPY( NMAT, WORK( I ), 1, NVAL, 1 )
334 CALL ICOPY( NNB, WORK( I ), 1, NBVAL, 1 )
336 CALL ICOPY( NGRIDS, WORK( I ), 1, PVAL, 1 )
338 CALL ICOPY( NGRIDS, WORK( I ), 1, QVAL, 1 )
342 CALL BLACS_GRIDEXIT( ICTXT )
347 WRITE( NOUT, FMT = 9993 )
349.NE..AND..NE.
IF( NOUT6 NOUT0 )
351 CALL BLACS_ABORT( ICTXT, 1 )
356 9998 FORMAT( 'routines pass computational tests
if scaled residual
',
357 $ 'is less than
', G12.5 )
358 9997 FORMAT( ' ', 10I6 )
359 9996 FORMAT( 2X, A5, ' :
', 10I6 )
360 9995 FORMAT( 'relative machine precision(eps) is taken to be
',
362 9994 FORMAT( ' number of values of
', 5A,
363 $ ' is less than 1 or greater
', 'than
', I2 )
364 9993 FORMAT( ' illegal input in file
', 40A, '. aborting run.
' )
365 9992 FORMAT( ' blocking
size too small at
', I2, ' must be >=6.
' )
subroutine sgebs2d(contxt, scope, top, m, n, a, lda)
subroutine sgebr2d(contxt, scope, top, m, n, a, lda)
subroutine pzevcinfo(summry, nout, nmat, nval, ldnval, nnb, nbval, ldnbval, ngrids, pval, ldpval, qval, ldqval, thresh, work, iam, nprocs)