4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PZGEMM ',
'PZSYMM ',
'PZHEMM ',
7 $
'PZSYRK ',
'PZHERK ',
'PZSYR2K',
8 $
'PZHER2K',
'PZTRMM ',
'PZTRSM ',
9 $
'PZGEADD',
'PZTRADD'/
122 INTEGER maxtests, maxgrids, zplxsz, totmem, memsiz,
125 parameter( maxtests = 20, maxgrids = 20, zplxsz = 16,
126 $ one = ( 1.0d+0, 0.0d+0 ), totmem = 2000000,
127 $ nsubs = 11, memsiz = totmem / zplxsz )
128 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
129 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
131 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
132 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
133 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
134 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
137 CHARACTER*1 adiagdo, aform, cform, diag, side, transa,
139 INTEGER csrca, csrcb, csrcc, i, ia, iam, iaseed, ib,
140 $ ibseed, ic, icseed, ictxt, imba, imbb, imbc,
141 $ imida, imidb, imidc, inba, inbb, inbc, ipa,
142 $ ipb, ipc, iposta, ipostb, ipostc, iprea, ipreb,
143 $ iprec, j, ja, jb, jc, k, l, m, ma, mb, mba,
144 $ mbb, mbc, mc, memreqd, mpa, mpb, mpc, mycol,
145 $ myrow, n, na, nb, nba, nbb, nbc, nc, ncola,
146 $ ncolb, ncolc, ngrids, nout, npcol, nprocs,
147 $ nprow, nqa, nqb, nqc, nrowa, nrowb, nrowc,
148 $ ntests, offda, offdc, rsrca, rsrcb, rsrcc
149 DOUBLE PRECISION cflops, nops, wflops
150 COMPLEX*16 alpha, beta, scale
153 LOGICAL ltest( nsubs ), bcheck( nsubs ),
155 CHARACTER*1 diagval( maxtests ), sideval( maxtests ),
156 $ trnaval( maxtests ), trnbval( maxtests ),
157 $ uploval( maxtests )
159 INTEGER cscaval( maxtests ), cscbval( maxtests ),
160 $ csccval( maxtests ), desca( dlen_ ),
161 $ descb( dlen_ ), descc( dlen_ ),
162 $ iaval( maxtests ), ibval( maxtests ),
163 $ icval( maxtests ), ierr( 3 ),
164 $ imbaval( maxtests ), imbbval( maxtests ),
165 $ imbcval( maxtests ), inbaval( maxtests ),
166 $ inbbval( maxtests ), inbcval( maxtests ),
167 $ javal( maxtests ), jbval( maxtests ),
168 $ jcval( maxtests ), kval( maxtests ),
169 $ maval( maxtests ), mbaval( maxtests ),
170 $ mbbval( maxtests ), mbcval( maxtests ),
171 $ mbval( maxtests ), mcval( maxtests ),
172 $ mval( maxtests ), naval( maxtests ),
173 $ nbaval( maxtests ), nbbval( maxtests ),
174 $ nbcval( maxtests ), nbval( maxtests ),
175 $ ncval( maxtests ), nval( maxtests ),
176 $ pval( maxtests ), qval( maxtests ),
177 $ rscaval( maxtests ), rscbval( maxtests ),
178 $ rsccval( maxtests )
179 DOUBLE PRECISION ctime( 1 ), wtime( 1 )
180 COMPLEX*16 mem( memsiz )
183 EXTERNAL blacs_barrier, blacs_exit, blacs_get,
184 $ blacs_gridexit, blacs_gridinfo, blacs_gridinit,
187 $ pzgeadd, pzgemm, pzhemm, pzher2k, pzherk,
189 $ pztradd, pztrmm, pztrsm
197 INTRINSIC dble, dcmplx,
max
200 CHARACTER*7 snames( nsubs )
203 COMMON /snamec/snames
204 COMMON /infoc/info, nblog
205 COMMON /pberrorc/nout, abrtflg
208 DATA bcheck/.true., .true., .true., .false.,
209 $ .false., .true., .true., .true., .true.,
211 DATA ccheck/.true., .true., .true., .true., .true.,
212 $ .true., .true., .false., .false., .true.,
232 CALL blacs_pinfo( iam, nprocs )
234 $ trnaval, trnbval, uploval, mval, nval,
235 $ kval, maval, naval, imbaval, mbaval,
236 $ inbaval, nbaval, rscaval, cscaval, iaval,
237 $ javal, mbval, nbval, imbbval, mbbval,
238 $ inbbval, nbbval, rscbval, cscbval, ibval,
239 $ jbval, mcval, ncval, imbcval, mbcval,
240 $ inbcval, nbcval, rsccval, csccval, icval,
241 $ jcval, maxtests, ngrids, pval, maxgrids,
242 $ qval, maxgrids, nblog, ltest, iam, nprocs,
246 $
WRITE( nout, fmt = 9984 )
258 IF( nprow.LT.1 )
THEN
260 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
262 ELSE IF( npcol.LT.1 )
THEN
264 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
266 ELSE IF( nprow*npcol.GT.nprocs )
THEN
268 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
272 IF( ierr( 1 ).GT.0 )
THEN
274 $
WRITE( nout, fmt = 9997 )
'GRID'
280 CALL blacs_get( -1, 0, ictxt )
281 CALL blacs_gridinit( ictxt,
'Row-major', nprow, npcol )
282 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
287 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
298 transa = trnaval( j )
299 transb = trnbval( j )
341 WRITE( nout, fmt = * )
342 WRITE( nout, fmt = 9996 ) j, nprow, npcol
343 WRITE( nout, fmt = * )
345 WRITE( nout, fmt = 9995 )
346 WRITE( nout, fmt = 9994 )
347 WRITE( nout, fmt = 9995 )
348 WRITE( nout, fmt = 9993 ) m, n, k, side, uplo, transa,
351 WRITE( nout, fmt = 9995 )
352 WRITE( nout, fmt = 9992 )
353 WRITE( nout, fmt = 9995 )
354 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
355 $ mba, nba, rsrca, csrca
357 WRITE( nout, fmt = 9995 )
358 WRITE( nout, fmt = 9990 )
359 WRITE( nout, fmt = 9995 )
360 WRITE( nout, fmt = 9991 ) ib, jb, mb, nb, imbb, inbb,
361 $ mbb, nbb, rsrcb, csrcb
363 WRITE( nout, fmt = 9995 )
364 WRITE( nout, fmt = 9989 )
365 WRITE( nout, fmt = 9995 )
366 WRITE( nout, fmt = 9991 ) ic, jc, mc, nc, imbc, inbc,
367 $ mbc, nbc, rsrcc, csrcc
369 WRITE( nout, fmt = 9995 )
370 WRITE( nout, fmt = 9980 )
376 IF( .NOT.
lsame( side,
'L' ).AND.
377 $ .NOT.
lsame( side,
'R' ) )
THEN
379 $
WRITE( nout, fmt = 9997 )
'SIDE'
383 IF( .NOT.
lsame( uplo,
'U' ).AND.
384 $ .NOT.
lsame( uplo,
'L' ) )
THEN
386 $
WRITE( nout, fmt = 9997 )
'UPLO'
390 IF( .NOT.
lsame( transa,
'N' ).AND.
391 $ .NOT.
lsame( transa,
'T' ).AND.
392 $ .NOT.
lsame( transa,
'C' ) )
THEN
394 $
WRITE( nout, fmt = 9997 )
'TRANSA'
398 IF( .NOT.
lsame( transb,
'N' ).AND.
399 $ .NOT.
lsame( transb,
'T' ).AND.
400 $ .NOT.
lsame( transb,
'C' ) )
THEN
402 $
WRITE( nout, fmt = 9997 )
'TRANSB'
406 IF( .NOT.
lsame( diag ,
'U' ).AND.
407 $ .NOT.
lsame( diag ,
'N' ) )
THEN
409 $
WRITE( nout, fmt = 9997 )
'DIAG'
416 $ block_cyclic_2d_inb, ma, na, imba, inba,
417 $ mba, nba, rsrca, csrca, mpa, nqa, iprea,
418 $ imida, iposta, 0, 0, ierr( 1 ) )
421 $ block_cyclic_2d_inb, mb, nb, imbb, inbb,
422 $ mbb, nbb, rsrcb, csrcb, mpb, nqb, ipreb,
423 $ imidb, ipostb, 0, 0, ierr( 2 ) )
426 $ block_cyclic_2d_inb, mc, nc, imbc, inbc,
427 $ mbc, nbc, rsrcc, csrcc, mpc, nqc, iprec,
428 $ imidc, ipostc, 0, 0, ierr( 3 ) )
430 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
431 $ ierr( 3 ).GT.0 )
THEN
439 ipb = ipa + desca( lld_ )*nqa
440 ipc = ipb + descb( lld_ )*nqb
444 memreqd = ipc + descc( lld_ )*nqc - 1
446 IF( memreqd.GT.memsiz )
THEN
448 $
WRITE( nout, fmt = 9987 ) memreqd*zplxsz
454 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
456 IF( ierr( 1 ).GT.0 )
THEN
458 $
WRITE( nout, fmt = 9988 )
468 IF( .NOT.ltest( l ) )
479 IF(
lsame( transa,
'N' ) )
THEN
486 IF(
lsame( transb,
'N' ) )
THEN
493 ELSE IF( l.EQ.2 .OR. l.EQ.3 )
THEN
501 IF(
lsame( side,
'L' ) )
THEN
508 ELSE IF( l.EQ.4 .OR. l.EQ.5 )
THEN
514 IF(
lsame( transa,
'N' ) )
THEN
523 ELSE IF( l.EQ.6 .OR. l.EQ.7 )
THEN
529 IF(
lsame( transa,
'N' ) )
THEN
540 ELSE IF( l.EQ.8 .OR. l.EQ.9 )
THEN
546 IF(
lsame( side,
'L' ) )
THEN
555 ELSE IF( l.EQ.10 .OR. l.EQ.11 )
THEN
559 IF(
lsame( transa,
'N' ) )
THEN
575 CALL pmdimchk( ictxt, nout, nrowa, ncola,
'A', ia, ja,
577 CALL pmdimchk( ictxt, nout, nrowb, ncolb,
'B', ib, jb,
579 CALL pmdimchk( ictxt, nout, nrowc, ncolc,
'C', ic, jc,
582 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 .OR.
583 $ ierr( 3 ).NE.0 )
THEN
590 IF( l.EQ.4 .OR. l.EQ.6 )
THEN
591 IF( .NOT.
lsame( transa,
'N' ).AND.
592 $ .NOT.
lsame( transa,
'T' ) )
THEN
594 $
WRITE( nout, fmt = 9983 ) snames( l ),
'TRANSA'
597 ELSE IF( l.EQ.5 .OR. l.EQ.7 )
THEN
598 IF( .NOT.
lsame( transa,
'N' ).AND.
599 $ .NOT.
lsame( transa,
'C' ) )
THEN
601 $
WRITE( nout, fmt = 9983 ) snames( l ),
'TRANSA'
618 ELSE IF( l.EQ.3 )
THEN
628 ELSE IF( l.EQ.4 .OR. l.EQ.6 )
THEN
638 ELSE IF( l.EQ.5 .OR. l.EQ.7 )
THEN
648 ELSE IF( ( l.EQ.9 ).AND.(
lsame( diag,
'N' ) ) )
THEN
670 CALL pzlagen( .false., aform, adiagdo, offda, ma, na,
671 $ 1, 1, desca, iaseed, mem( ipa ),
673 IF( ( l.EQ.9 ).AND.( .NOT.(
lsame( diag,
'N' ) ) ).AND.
674 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
675 scale = one / dcmplx( dble(
max( nrowa, ncola ) ) )
676 IF(
lsame( uplo,
'L' ) )
THEN
677 CALL pzlascal(
'Lower', nrowa-1, ncola-1, scale,
678 $ mem( ipa ), ia+1, ja, desca )
680 CALL pzlascal(
'Upper', nrowa-1, ncola-1, scale,
681 $ mem( ipa ), ia, ja+1, desca )
687 $
CALL pzlagen( .false.,
'None',
'No diag', 0, mb, nb,
688 $ 1, 1, descb, ibseed, mem( ipb ),
692 $
CALL pzlagen( .false., cform,
'No diag', offdc, mc,
693 $ nc, 1, 1, descc, icseed, mem( ipc ),
698 CALL blacs_barrier( ictxt,
'All' )
706 nops =
pdopbl3( snames( l ), m, n, k )
709 CALL pzgemm( transa, transb, m, n, k, alpha,
710 $ mem( ipa ), ia, ja, desca, mem( ipb ),
711 $ ib, jb, descb, beta, mem( ipc ), ic, jc,
715 ELSE IF( l.EQ.2 )
THEN
719 IF(
lsame( side,
'L' ) )
THEN
720 nops =
pdopbl3( snames( l ), m, n, 0 )
722 nops =
pdopbl3( snames( l ), m, n, 1 )
726 CALL pzsymm( side, uplo, m, n, alpha, mem( ipa ), ia,
727 $ ja, desca, mem( ipb ), ib, jb, descb,
728 $ beta, mem( ipc ), ic, jc, descc )
731 ELSE IF( l.EQ.3 )
THEN
735 IF(
lsame( side,
'L' ) )
THEN
736 nops =
pdopbl3( snames( l ), m, n, 0 )
738 nops =
pdopbl3( snames( l ), m, n, 1 )
742 CALL pzhemm( side, uplo, m, n, alpha, mem( ipa ), ia,
743 $ ja, desca, mem( ipb ), ib, jb, descb,
744 $ beta, mem( ipc ), ic, jc, descc )
747 ELSE IF( l.EQ.4 )
THEN
751 nops =
pdopbl3( snames( l ), n, n, k )
754 CALL pzsyrk( uplo, transa, n, k, alpha, mem( ipa ),
755 $ ia, ja, desca, beta, mem( ipc ), ic, jc,
759 ELSE IF( l.EQ.5 )
THEN
763 nops =
pdopbl3( snames( l ), n, n, k )
766 CALL pzherk( uplo, transa, n, k, dble( alpha ),
767 $ mem( ipa ), ia, ja, desca, dble( beta ),
768 $ mem( ipc ), ic, jc, descc )
771 ELSE IF( l.EQ.6 )
THEN
775 nops =
pdopbl3( snames( l ), n, n, k )
778 CALL pzsyr2k( uplo, transa, n, k, alpha, mem( ipa ),
779 $ ia, ja, desca, mem( ipb ), ib, jb,
780 $ descb, beta, mem( ipc ), ic, jc,
784 ELSE IF( l.EQ.7 )
THEN
788 nops =
pdopbl3( snames( l ), n, n, k )
791 CALL pzher2k( uplo, transa, n, k, alpha, mem( ipa ),
792 $ ia, ja, desca, mem( ipb ), ib, jb,
793 $ descb, dble( beta ), mem( ipc ), ic, jc,
797 ELSE IF( l.EQ.8 )
THEN
801 IF(
lsame( side,
'L' ) )
THEN
802 nops =
pdopbl3( snames( l ), m, n, 0 )
804 nops =
pdopbl3( snames( l ), m, n, 1 )
808 CALL pztrmm( side, uplo, transa, diag, m, n, alpha,
809 $ mem( ipa ), ia, ja, desca, mem( ipb ),
813 ELSE IF( l.EQ.9 )
THEN
817 IF(
lsame( side,
'L' ) )
THEN
818 nops =
pdopbl3( snames( l ), m, n, 0 )
820 nops =
pdopbl3( snames( l ), m, n, 1 )
824 CALL pztrsm( side, uplo, transa, diag, m, n, alpha,
825 $ mem( ipa ), ia, ja, desca, mem( ipb ),
829 ELSE IF( l.EQ.10 )
THEN
833 nops =
pdopbl3( snames( l ), m, n, m )
836 CALL pzgeadd( transa, m, n, alpha, mem( ipa ), ia, ja,
837 $ desca, beta, mem( ipc ), ic, jc, descc )
840 ELSE IF( l.EQ.11 )
THEN
844 IF(
lsame( uplo,
'U' ) )
THEN
845 nops =
pdopbl3( snames( l ), m, n, 0 )
847 nops =
pdopbl3( snames( l ), m, n, 1 )
851 CALL pztradd( uplo, transa, m, n, alpha, mem( ipa ),
852 $ ia, ja, desca, beta, mem( ipc ), ic, jc,
862 $
WRITE( nout, fmt = 9982 ) info
866 CALL pb_combine( ictxt,
'All',
'>',
'W', 1, 1, wtime )
867 CALL pb_combine( ictxt,
'All',
'>',
'C', 1, 1, ctime )
875 IF( wtime( 1 ).GT.0.0d+0 )
THEN
876 wflops = nops / ( wtime( 1 ) * 1.0d+6 )
883 IF( ctime( 1 ).GT.0.0d+0 )
THEN
884 cflops = nops / ( ctime( 1 ) * 1.0d+6 )
889 WRITE( nout, fmt = 9981 ) snames( l ), wtime( 1 ),
890 $ wflops, ctime( 1 ), cflops
896 40
IF( iam.EQ.0 )
THEN
897 WRITE( nout, fmt = 9995 )
898 WRITE( nout, fmt = * )
899 WRITE( nout, fmt = 9986 ) j
904 CALL blacs_gridexit( ictxt )
909 WRITE( nout, fmt = * )
910 WRITE( nout, fmt = 9985 )
911 WRITE( nout, fmt = * )
916 9999
FORMAT(
'ILLEGAL ', a,
': ', a,
' = ', i10,
917 $
' should be at least 1' )
918 9998
FORMAT(
'ILLEGAL GRID: NPROW*NPCOL = ', i4,
919 $
'. It can be at most', i4 )
920 9997
FORMAT(
'Bad ', a,
' parameters: going on to next test case.' )
921 9996
FORMAT( 2x,
'Test number ', i2 ,
' started on a ', i4,
' x ',
922 $ i4,
' process grid.' )
923 9995
FORMAT( 2x,
' ------------------------------------------------',
924 $
'-------------------' )
925 9994
FORMAT( 2x,
' M N K SIDE UPLO TRANSA ',
927 9993
FORMAT( 5x,i6,1x,i6,1x,i6,6x,a1,5x,a1,7x,a1,7x,a1,5x,a1 )
928 9992
FORMAT( 2x,
' IA JA MA NA IMBA INBA',
929 $
' MBA NBA RSRCA CSRCA' )
930 9991
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
932 9990
FORMAT( 2x,
' IB JB MB NB IMBB INBB',
933 $
' MBB NBB RSRCB CSRCB' )
934 9989
FORMAT( 2x,
' IC JC MC NC IMBC INBC',
935 $
' MBC NBC RSRCC CSRCC' )
936 9988
FORMAT(
'Not enough memory for this test: going on to',
937 $
' next test case.' )
938 9987
FORMAT(
'Not enough memory. Need: ', i12 )
939 9986
FORMAT( 2x,
'Test number ', i2,
' completed.' )
940 9985
FORMAT( 2x,
'End of Tests.' )
941 9984
FORMAT( 2x,
'Tests started.' )
942 9983
FORMAT( 5x, a,
' ***** ', a,
' has an incorrect value: ',
944 9982
FORMAT( 2x,
' ***** Operation not supported, error code: ',
946 9981
FORMAT( 2x,
'| ', a, 2x, f13.3, 2x, f13.3, 2x, f13.3, 2x, f13.3 )
947 9980
FORMAT( 2x,
' WALL time (s) WALL Mflops ',
948 $
' CPU time (s) CPU Mflops' )
955 SUBROUTINE pzbla3timinfo( SUMMRY, NOUT, NMAT, DIAGVAL, SIDEVAL,
956 $ TRNAVAL, TRNBVAL, UPLOVAL, MVAL,
957 $ NVAL, KVAL, MAVAL, NAVAL, IMBAVAL,
958 $ MBAVAL, INBAVAL, NBAVAL, RSCAVAL,
959 $ CSCAVAL, IAVAL, JAVAL, MBVAL, NBVAL,
960 $ IMBBVAL, MBBVAL, INBBVAL, NBBVAL,
961 $ RSCBVAL, CSCBVAL, IBVAL, JBVAL,
962 $ MCVAL, NCVAL, IMBCVAL, MBCVAL,
963 $ INBCVAL, NBCVAL, RSCCVAL, CSCCVAL,
964 $ ICVAL, JCVAL, LDVAL, NGRIDS, PVAL,
965 $ LDPVAL, QVAL, LDQVAL, NBLOG, LTEST,
966 $ IAM, NPROCS, ALPHA, BETA, WORK )
974 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NBLOG, NGRIDS,
976 COMPLEX*16 ALPHA, BETA
979 CHARACTER*( * ) SUMMRY
980 CHARACTER*1 DIAGVAL( LDVAL ), SIDEVAL( LDVAL ),
981 $ TRNAVAL( LDVAL ), TRNBVAL( LDVAL ),
984 INTEGER CSCAVAL( LDVAL ), CSCBVAL( LDVAL ),
985 $ csccval( ldval ), iaval( ldval ),
986 $ ibval( ldval ), icval( ldval ),
987 $ imbaval( ldval ), imbbval( ldval ),
988 $ imbcval( ldval ), inbaval( ldval ),
989 $ inbbval( ldval ), inbcval( ldval ),
990 $ javal( ldval ), jbval( ldval ), jcval( ldval ),
991 $ kval( ldval ), maval( ldval ), mbaval( ldval ),
992 $ mbbval( ldval ), mbcval( ldval ),
993 $ mbval( ldval ), mcval( ldval ), mval( ldval ),
994 $ naval( ldval ), nbaval( ldval ),
995 $ nbbval( ldval ), nbcval( ldval ),
996 $ nbval( ldval ), ncval( ldval ), nval( ldval ),
997 $ pval( ldpval ), qval( ldqval ),
998 $ rscaval( ldval ), rscbval( ldval ),
999 $ rsccval( ldval ), work( * )
1271 PARAMETER ( NIN = 11, nsubs = 11 )
1279 CHARACTER*79 USRINFO
1282 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1283 $ blacs_gridinit, blacs_setup,
icopy, igebr2d,
1284 $ igebs2d, sgebr2d, sgebs2d, zgebr2d, zgebs2d
1287 INTRINSIC char, ichar,
max,
min
1290 CHARACTER*7 SNAMES( NSUBS )
1291 COMMON /SNAMEC/SNAMES
1302 OPEN( nin, file=
'PZBLAS3TIM.dat', status=
'OLD' )
1303 READ( nin, fmt = * ) summry
1308 READ( nin, fmt = 9999 ) usrinfo
1312 READ( nin, fmt = * ) summry
1313 READ( nin, fmt = * ) nout
1314 IF( nout.NE.0 .AND. nout.NE.6 )
1315 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1321 READ( nin, fmt = * ) nblog
1327 READ( nin, fmt = * ) ngrids
1328 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1329 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1331 ELSE IF( ngrids.GT.ldqval )
THEN
1332 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1338 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1339 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1343 READ( nin, fmt = * ) alpha
1344 READ( nin, fmt = * ) beta
1348 READ( nin, fmt = * ) nmat
1349 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1350 WRITE( nout, fmt = 9998 )
'Tests', ldval
1356 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1357 READ( nin, fmt = * ) ( sideval( i ), i = 1, nmat )
1358 READ( nin, fmt = * ) ( trnaval( i ), i = 1, nmat )
1359 READ( nin, fmt = * ) ( trnbval( i ), i = 1, nmat )
1360 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1361 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1362 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1363 READ( nin, fmt = * ) ( kval( i ), i = 1, nmat )
1364 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1365 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1366 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1367 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1368 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1369 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1370 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1371 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1372 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1373 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1374 READ( nin, fmt = * ) ( mbval( i ), i = 1, nmat )
1375 READ( nin, fmt = * ) ( nbval( i ), i = 1, nmat )
1376 READ( nin, fmt = * ) ( imbbval( i ), i = 1, nmat )
1377 READ( nin, fmt = * ) ( inbbval( i ), i = 1, nmat )
1378 READ( nin, fmt = * ) ( mbbval( i ), i = 1, nmat )
1379 READ( nin, fmt = * ) ( nbbval( i ), i = 1, nmat )
1380 READ( nin, fmt = * ) ( rscbval( i ), i = 1, nmat )
1381 READ( nin, fmt = * ) ( cscbval( i ), i = 1, nmat )
1382 READ( nin, fmt = * ) ( ibval( i ), i = 1, nmat )
1383 READ( nin, fmt = * ) ( jbval( i ), i = 1, nmat )
1384 READ( nin, fmt = * ) ( mcval( i ), i = 1, nmat )
1385 READ( nin, fmt = * ) ( ncval( i ), i = 1, nmat )
1386 READ( nin, fmt = * ) ( imbcval( i ), i = 1, nmat )
1387 READ( nin, fmt = * ) ( inbcval( i ), i = 1, nmat )
1388 READ( nin, fmt = * ) ( mbcval( i ), i = 1, nmat )
1389 READ( nin, fmt = * ) ( nbcval( i ), i = 1, nmat )
1390 READ( nin, fmt = * ) ( rsccval( i ), i = 1, nmat )
1391 READ( nin, fmt = * ) ( csccval( i ), i = 1, nmat )
1392 READ( nin, fmt = * ) ( icval( i ), i = 1, nmat )
1393 READ( nin, fmt = * ) ( jcval( i ), i = 1, nmat )
1399 ltest( i ) = .false.
1402 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1404 IF( snamet.EQ.snames( i ) )
1408 WRITE( nout, fmt = 9995 )snamet
1424 IF( nprocs.LT.1 )
THEN
1427 nprocs =
max( nprocs, pval( i )*qval( i ) )
1429 CALL blacs_setup( iam, nprocs )
1435 CALL blacs_get( -1, 0, ictxt )
1436 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1440 CALL zgebs2d( ictxt,
'All',
' ', 1, 1, alpha, 1 )
1441 CALL zgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1446 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1450 work( i ) = ichar( diagval( j ) )
1451 work( i+1 ) = ichar( sideval( j ) )
1452 work( i+2 ) = ichar( trnaval( j ) )
1453 work( i+3 ) = ichar( trnbval( j ) )
1454 work( i+4 ) = ichar( uploval( j ) )
1457 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1459 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1461 CALL icopy( nmat, mval, 1, work( i ), 1 )
1463 CALL icopy( nmat, nval, 1, work( i ), 1 )
1465 CALL icopy( nmat, kval, 1, work( i ), 1 )
1467 CALL icopy( nmat, maval, 1, work( i ), 1 )
1469 CALL icopy( nmat, naval, 1, work( i ), 1 )
1471 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1473 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1475 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1477 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1479 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1481 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1483 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1485 CALL icopy( nmat, javal, 1, work( i ), 1 )
1487 CALL icopy( nmat, mbval, 1, work( i ), 1 )
1489 CALL icopy( nmat, nbval, 1, work( i ), 1 )
1491 CALL icopy( nmat, imbbval, 1, work( i ), 1 )
1493 CALL icopy( nmat, inbbval, 1, work( i ), 1 )
1495 CALL icopy( nmat, mbbval, 1, work( i ), 1 )
1497 CALL icopy( nmat, nbbval, 1, work( i ), 1 )
1499 CALL icopy( nmat, rscbval, 1, work( i ), 1 )
1501 CALL icopy( nmat, cscbval, 1, work( i ), 1 )
1503 CALL icopy( nmat, ibval, 1, work( i ), 1 )
1505 CALL icopy( nmat, jbval, 1, work( i ), 1 )
1507 CALL icopy( nmat, mcval, 1, work( i ), 1 )
1509 CALL icopy( nmat, ncval, 1, work( i ), 1 )
1511 CALL icopy( nmat, imbcval, 1, work( i ), 1 )
1513 CALL icopy( nmat, inbcval, 1, work( i ), 1 )
1515 CALL icopy( nmat, mbcval, 1, work( i ), 1 )
1517 CALL icopy( nmat, nbcval, 1, work( i ), 1 )
1519 CALL icopy( nmat, rsccval, 1, work( i ), 1 )
1521 CALL icopy( nmat, csccval, 1, work( i ), 1 )
1523 CALL icopy( nmat, icval, 1, work( i ), 1 )
1525 CALL icopy( nmat, jcval, 1, work( i ), 1 )
1529 IF( ltest( j ) )
THEN
1537 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1541 WRITE( nout, fmt = 9999 )
1542 $
'Level 3 PBLAS timing program.'
1543 WRITE( nout, fmt = 9999 ) usrinfo
1544 WRITE( nout, fmt = * )
1545 WRITE( nout, fmt = 9999 )
1546 $
'Tests of the complex double precision '//
1548 WRITE( nout, fmt = * )
1549 WRITE( nout, fmt = 9992 ) nmat
1550 WRITE( nout, fmt = 9986 ) nblog
1551 WRITE( nout, fmt = 9991 ) ngrids
1552 WRITE( nout, fmt = 9989 )
1553 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1555 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 6,
1556 $
min( 10, ngrids ) )
1558 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 11,
1559 $
min( 15, ngrids ) )
1561 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 16, ngrids )
1562 WRITE( nout, fmt = 9989 )
1563 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1565 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 6,
1566 $
min( 10, ngrids ) )
1568 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 11,
1569 $
min( 15, ngrids ) )
1571 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 16, ngrids )
1572 WRITE( nout, fmt = 9994 ) alpha
1573 WRITE( nout, fmt = 9993 ) beta
1574 IF( ltest( 1 ) )
THEN
1575 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... Yes'
1577 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... No '
1580 IF( ltest( i ) )
THEN
1581 WRITE( nout, fmt = 9987 ) snames( i ),
' ... Yes'
1583 WRITE( nout, fmt = 9987 ) snames( i ),
' ... No '
1586 WRITE( nout, fmt = * )
1593 $
CALL blacs_setup( iam, nprocs )
1598 CALL blacs_get( -1, 0, ictxt )
1599 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1601 CALL zgebr2d( ictxt,
'All',
' ', 1, 1, alpha, 1, 0, 0 )
1602 CALL zgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1604 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1609 i = 2*ngrids + 38*nmat + nsubs
1610 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1614 diagval( j ) = char( work( i ) )
1615 sideval( j ) = char( work( i+1 ) )
1616 trnaval( j ) = char( work( i+2 ) )
1617 trnbval( j ) = char( work( i+3 ) )
1618 uploval( j ) = char( work( i+4 ) )
1621 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1623 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1625 CALL icopy( nmat, work( i ), 1, mval, 1 )
1627 CALL icopy( nmat, work( i ), 1, nval, 1 )
1629 CALL icopy( nmat, work( i ), 1, kval, 1 )
1631 CALL icopy( nmat, work( i ), 1, maval, 1 )
1633 CALL icopy( nmat, work( i ), 1, naval, 1 )
1635 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1637 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1639 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1641 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1643 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1645 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1647 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1649 CALL icopy( nmat, work( i ), 1, javal, 1 )
1651 CALL icopy( nmat, work( i ), 1, mbval, 1 )
1653 CALL icopy( nmat, work( i ), 1, nbval, 1 )
1655 CALL icopy( nmat, work( i ), 1, imbbval, 1 )
1657 CALL icopy( nmat, work( i ), 1, inbbval, 1 )
1659 CALL icopy( nmat, work( i ), 1, mbbval, 1 )
1661 CALL icopy( nmat, work( i ), 1, nbbval, 1 )
1663 CALL icopy( nmat, work( i ), 1, rscbval, 1 )
1665 CALL icopy( nmat, work( i ), 1, cscbval, 1 )
1667 CALL icopy( nmat, work( i ), 1, ibval, 1 )
1669 CALL icopy( nmat, work( i ), 1, jbval, 1 )
1671 CALL icopy( nmat, work( i ), 1, mcval, 1 )
1673 CALL icopy( nmat, work( i ), 1, ncval, 1 )
1675 CALL icopy( nmat, work( i ), 1, imbcval, 1 )
1677 CALL icopy( nmat, work( i ), 1, inbcval, 1 )
1679 CALL icopy( nmat, work( i ), 1, mbcval, 1 )
1681 CALL icopy( nmat, work( i ), 1, nbcval, 1 )
1683 CALL icopy( nmat, work( i ), 1, rsccval, 1 )
1685 CALL icopy( nmat, work( i ), 1, csccval, 1 )
1687 CALL icopy( nmat, work( i ), 1, icval, 1 )
1689 CALL icopy( nmat, work( i ), 1, jcval, 1 )
1693 IF( work( i ).EQ.1 )
THEN
1696 ltest( j ) = .false.
1703 CALL blacs_gridexit( ictxt )
1707 120
WRITE( nout, fmt = 9997 )
1709 IF( nout.NE.6 .AND. nout.NE.0 )
1711 CALL blacs_abort( ictxt, 1 )
1716 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1718 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1719 9996
FORMAT( a7, l2 )
1720 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1721 $ /
' ******* TESTS ABANDONED *******' )
1722 9994
FORMAT( 2x,
'Alpha : (', g16.6,
1724 9993
FORMAT( 2x,
'Beta : (', g16.6,
1726 9992
FORMAT( 2x,
'Number of Tests : ', i6 )
1727 9991
FORMAT( 2x,
'Number of process grids : ', i6 )
1728 9990
FORMAT( 2x,
' : ', 5i6 )
1729 9989
FORMAT( 2x, a1,
' : ', 5i6 )
1730 9988
FORMAT( 2x,
'Routines to be tested : ', a, a8 )
1731 9987
FORMAT( 2x,
' ', a, a8 )
1732 9986
FORMAT( 2x,
'Logical block size : ', i6 )