4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PSGEMM ',
'PSSYMM ',
'PSSYRK ',
7 $
'PSSYR2K',
'PSTRMM ',
'PSTRSM ',
8 $
'PSGEADD',
'PSTRADD'/
116 INTEGER maxtests, maxgrids, realsz, totmem, memsiz,
119 parameter( maxtests = 20, maxgrids = 20, realsz = 4,
120 $ one = 1.0e+0, totmem = 2000000, nsubs = 8,
121 $ memsiz = totmem / realsz )
122 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
123 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
125 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
126 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
127 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
128 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
131 CHARACTER*1 adiagdo, aform, cform, diag, side, transa,
133 INTEGER csrca, csrcb, csrcc, i, ia, iam, iaseed, ib,
134 $ ibseed, ic, icseed, ictxt, imba, imbb, imbc,
135 $ imida, imidb, imidc, inba, inbb, inbc, ipa,
136 $ ipb, ipc, iposta, ipostb, ipostc, iprea, ipreb,
137 $ iprec, j, ja, jb, jc, k, l, m, ma, mb, mba,
138 $ mbb, mbc, mc, memreqd, mpa, mpb, mpc, mycol,
139 $ myrow, n, na, nb, nba, nbb, nbc, nc, ncola,
140 $ ncolb, ncolc, ngrids, nout, npcol, nprocs,
141 $ nprow, nqa, nqb, nqc, nrowa, nrowb, nrowc,
142 $ ntests, offda, offdc, rsrca, rsrcb, rsrcc
143 REAL alpha, beta, scale
144 DOUBLE PRECISION cflops, nops, wflops
147 LOGICAL ltest( nsubs ), bcheck( nsubs ),
149 CHARACTER*1 diagval( maxtests ), sideval( maxtests ),
150 $ trnaval( maxtests ), trnbval( maxtests ),
151 $ uploval( maxtests )
153 INTEGER cscaval( maxtests ), cscbval( maxtests ),
154 $ csccval( maxtests ), desca( dlen_ ),
155 $ descb( dlen_ ), descc( dlen_ ),
156 $ iaval( maxtests ), ibval( maxtests ),
157 $ icval( maxtests ), ierr( 3 ),
158 $ imbaval( maxtests ), imbbval( maxtests ),
159 $ imbcval( maxtests ), inbaval( maxtests ),
160 $ inbbval( maxtests ), inbcval( maxtests ),
161 $ javal( maxtests ), jbval( maxtests ),
162 $ jcval( maxtests ), kval( maxtests ),
163 $ maval( maxtests ), mbaval( maxtests ),
164 $ mbbval( maxtests ), mbcval( maxtests ),
165 $ mbval( maxtests ), mcval( maxtests ),
166 $ mval( maxtests ), naval( maxtests ),
167 $ nbaval( maxtests ), nbbval( maxtests ),
168 $ nbcval( maxtests ), nbval( maxtests ),
169 $ ncval( maxtests ), nval( maxtests ),
170 $ pval( maxtests ), qval( maxtests ),
171 $ rscaval( maxtests ), rscbval( maxtests ),
172 $ rsccval( maxtests )
174 DOUBLE PRECISION ctime( 1 ), wtime( 1 )
177 EXTERNAL blacs_barrier, blacs_exit, blacs_get,
178 $ blacs_gridexit, blacs_gridinfo, blacs_gridinit,
182 $ pssyr2k, pssyrk, pstradd, pstrmm, pstrsm
190 INTRINSIC dble,
max, real
193 CHARACTER*7 snames( nsubs )
196 COMMON /snamec/snames
197 COMMON /infoc/info, nblog
198 COMMON /pberrorc/nout, abrtflg
201 DATA bcheck/.true., .true., .false., .true., .true.,
202 $ .true., .false., .false./
203 DATA ccheck/.true., .true., .true., .true., .false.,
204 $ .false., .true., .true./
223 CALL blacs_pinfo( iam, nprocs )
225 $ trnaval, trnbval, uploval, mval, nval,
226 $ kval, maval, naval, imbaval, mbaval,
227 $ inbaval, nbaval, rscaval, cscaval, iaval,
228 $ javal, mbval, nbval, imbbval, mbbval,
229 $ inbbval, nbbval, rscbval, cscbval, ibval,
230 $ jbval, mcval, ncval, imbcval, mbcval,
231 $ inbcval, nbcval, rsccval, csccval, icval,
232 $ jcval, maxtests, ngrids, pval, maxgrids,
233 $ qval, maxgrids, nblog, ltest, iam, nprocs,
237 $
WRITE( nout, fmt = 9984 )
249 IF( nprow.LT.1 )
THEN
251 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
253 ELSE IF( npcol.LT.1 )
THEN
255 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
257 ELSE IF( nprow*npcol.GT.nprocs )
THEN
259 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
263 IF( ierr( 1 ).GT.0 )
THEN
265 $
WRITE( nout, fmt = 9997 )
'GRID'
271 CALL blacs_get( -1, 0, ictxt )
272 CALL blacs_gridinit( ictxt,
'Row-major', nprow, npcol )
273 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
278 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
289 transa = trnaval( j )
290 transb = trnbval( j )
332 WRITE( nout, fmt = * )
333 WRITE( nout, fmt = 9996 ) j, nprow, npcol
334 WRITE( nout, fmt = * )
336 WRITE( nout, fmt = 9995 )
337 WRITE( nout, fmt = 9994 )
338 WRITE( nout, fmt = 9995 )
339 WRITE( nout, fmt = 9993 ) m, n, k, side, uplo, transa,
342 WRITE( nout, fmt = 9995 )
343 WRITE( nout, fmt = 9992 )
344 WRITE( nout, fmt = 9995 )
345 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
346 $ mba, nba, rsrca, csrca
348 WRITE( nout, fmt = 9995 )
349 WRITE( nout, fmt = 9990 )
350 WRITE( nout, fmt = 9995 )
351 WRITE( nout, fmt = 9991 ) ib, jb, mb, nb, imbb, inbb,
352 $ mbb, nbb, rsrcb, csrcb
354 WRITE( nout, fmt = 9995 )
355 WRITE( nout, fmt = 9989 )
356 WRITE( nout, fmt = 9995 )
357 WRITE( nout, fmt = 9991 ) ic, jc, mc, nc, imbc, inbc,
358 $ mbc, nbc, rsrcc, csrcc
360 WRITE( nout, fmt = 9995 )
361 WRITE( nout, fmt = 9980 )
367 IF( .NOT.
lsame( side,
'L' ).AND.
368 $ .NOT.
lsame( side,
'R' ) )
THEN
370 $
WRITE( nout, fmt = 9997 )
'SIDE'
374 IF( .NOT.
lsame( uplo,
'U' ).AND.
375 $ .NOT.
lsame( uplo,
'L' ) )
THEN
377 $
WRITE( nout, fmt = 9997 )
'UPLO'
381 IF( .NOT.
lsame( transa,
'N' ).AND.
382 $ .NOT.
lsame( transa,
'T' ).AND.
383 $ .NOT.
lsame( transa,
'C' ) )
THEN
385 $
WRITE( nout, fmt = 9997 )
'TRANSA'
389 IF( .NOT.
lsame( transb,
'N' ).AND.
390 $ .NOT.
lsame( transb,
'T' ).AND.
391 $ .NOT.
lsame( transb,
'C' ) )
THEN
393 $
WRITE( nout, fmt = 9997 )
'TRANSB'
397 IF( .NOT.
lsame( diag ,
'U' ).AND.
398 $ .NOT.
lsame( diag ,
'N' ) )
THEN
400 $
WRITE( nout, fmt = 9997 )
'DIAG'
407 $ block_cyclic_2d_inb, ma, na, imba, inba,
408 $ mba, nba, rsrca, csrca, mpa, nqa, iprea,
409 $ imida, iposta, 0, 0, ierr( 1 ) )
412 $ block_cyclic_2d_inb, mb, nb, imbb, inbb,
413 $ mbb, nbb, rsrcb, csrcb, mpb, nqb, ipreb,
414 $ imidb, ipostb, 0, 0, ierr( 2 ) )
417 $ block_cyclic_2d_inb, mc, nc, imbc, inbc,
418 $ mbc, nbc, rsrcc, csrcc, mpc, nqc, iprec,
419 $ imidc, ipostc, 0, 0, ierr( 3 ) )
421 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
422 $ ierr( 3 ).GT.0 )
THEN
430 ipb = ipa + desca( lld_ )*nqa
431 ipc = ipb + descb( lld_ )*nqb
435 memreqd = ipc + descc( lld_ )*nqc - 1
437 IF( memreqd.GT.memsiz )
THEN
439 $
WRITE( nout, fmt = 9987 ) memreqd*realsz
445 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
447 IF( ierr( 1 ).GT.0 )
THEN
449 $
WRITE( nout, fmt = 9988 )
459 IF( .NOT.ltest( l ) )
470 IF(
lsame( transa,
'N' ) )
THEN
477 IF(
lsame( transb,
'N' ) )
THEN
484 ELSE IF( l.EQ.2 )
THEN
492 IF(
lsame( side,
'L' ) )
THEN
499 ELSE IF( l.EQ.3 )
THEN
505 IF(
lsame( transa,
'N' ) )
THEN
514 ELSE IF( l.EQ.4 )
THEN
520 IF(
lsame( transa,
'N' ) )
THEN
531 ELSE IF( l.EQ.5 .OR. l.EQ.6 )
THEN
537 IF(
lsame( side,
'L' ) )
THEN
546 ELSE IF( l.EQ.7 .OR. l.EQ.8 )
THEN
550 IF(
lsame( transa,
'N' ) )
THEN
566 CALL pmdimchk( ictxt, nout, nrowa, ncola,
'A', ia, ja,
568 CALL pmdimchk( ictxt, nout, nrowb, ncolb,
'B', ib, jb,
570 CALL pmdimchk( ictxt, nout, nrowc, ncolc,
'C', ic, jc,
573 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 .OR.
574 $ ierr( 3 ).NE.0 )
THEN
590 ELSE IF( l.EQ.3 .OR. l.EQ.4 )
THEN
600 ELSE IF( ( l.EQ.6 ).AND.(
lsame( diag,
'N' ) ) )
THEN
622 CALL pslagen( .false., aform, adiagdo, offda, ma, na,
623 $ 1, 1, desca, iaseed, mem( ipa ),
625 IF( ( l.EQ.6 ).AND.( .NOT.(
lsame( diag,
'N' ) ) ).AND.
626 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
627 scale = one / real(
max( nrowa, ncola ) )
628 IF(
lsame( uplo,
'L' ) )
THEN
629 CALL pslascal(
'Lower', nrowa-1, ncola-1, scale,
630 $ mem( ipa ), ia+1, ja, desca )
632 CALL pslascal(
'Upper', nrowa-1, ncola-1, scale,
633 $ mem( ipa ), ia, ja+1, desca )
639 $
CALL pslagen( .false.,
'None',
'No diag', 0, mb, nb,
640 $ 1, 1, descb, ibseed, mem( ipb ),
644 $
CALL pslagen( .false., cform,
'No diag', offdc, mc,
645 $ nc, 1, 1, descc, icseed, mem( ipc ),
650 CALL blacs_barrier( ictxt,
'All' )
658 nops =
pdopbl3( snames( l ), m, n, k )
661 CALL psgemm( transa, transb, m, n, k, alpha,
662 $ mem( ipa ), ia, ja, desca, mem( ipb ),
663 $ ib, jb, descb, beta, mem( ipc ), ic, jc,
667 ELSE IF( l.EQ.2 )
THEN
671 IF(
lsame( side,
'L' ) )
THEN
672 nops =
pdopbl3( snames( l ), m, n, 0 )
674 nops =
pdopbl3( snames( l ), m, n, 1 )
678 CALL pssymm( side, uplo, m, n, alpha, mem( ipa ), ia,
679 $ ja, desca, mem( ipb ), ib, jb, descb,
680 $ beta, mem( ipc ), ic, jc, descc )
683 ELSE IF( l.EQ.3 )
THEN
687 nops =
pdopbl3( snames( l ), n, n, k )
690 CALL pssyrk( uplo, transa, n, k, alpha, mem( ipa ),
691 $ ia, ja, desca, beta, mem( ipc ), ic, jc,
695 ELSE IF( l.EQ.4 )
THEN
699 nops =
pdopbl3( snames( l ), n, n, k )
702 CALL pssyr2k( uplo, transa, n, k, alpha, mem( ipa ),
703 $ ia, ja, desca, mem( ipb ), ib, jb,
704 $ descb, beta, mem( ipc ), ic, jc,
708 ELSE IF( l.EQ.5 )
THEN
712 IF(
lsame( side,
'L' ) )
THEN
713 nops =
pdopbl3( snames( l ), m, n, 0 )
715 nops =
pdopbl3( snames( l ), m, n, 1 )
719 CALL pstrmm( side, uplo, transa, diag, m, n, alpha,
720 $ mem( ipa ), ia, ja, desca, mem( ipb ),
724 ELSE IF( l.EQ.6 )
THEN
728 IF(
lsame( side,
'L' ) )
THEN
729 nops =
pdopbl3( snames( l ), m, n, 0 )
731 nops =
pdopbl3( snames( l ), m, n, 1 )
735 CALL pstrsm( side, uplo, transa, diag, m, n, alpha,
736 $ mem( ipa ), ia, ja, desca, mem( ipb ),
740 ELSE IF( l.EQ.7 )
THEN
744 nops =
pdopbl3( snames( l ), m, n, m )
747 CALL psgeadd( transa, m, n, alpha, mem( ipa ), ia, ja,
748 $ desca, beta, mem( ipc ), ic, jc, descc )
751 ELSE IF( l.EQ.8 )
THEN
755 IF(
lsame( uplo,
'U' ) )
THEN
756 nops =
pdopbl3( snames( l ), m, n, 0 )
758 nops =
pdopbl3( snames( l ), m, n, 1 )
762 CALL pstradd( uplo, transa, m, n, alpha, mem( ipa ),
763 $ ia, ja, desca, beta, mem( ipc ), ic, jc,
773 $
WRITE( nout, fmt = 9982 ) info
777 CALL pb_combine( ictxt,
'All',
'>',
'W', 1, 1, wtime )
778 CALL pb_combine( ictxt,
'All',
'>',
'C', 1, 1, ctime )
786 IF( wtime( 1 ).GT.0.0d+0 )
THEN
787 wflops = nops / ( wtime( 1 ) * 1.0d+6 )
794 IF( ctime( 1 ).GT.0.0d+0 )
THEN
795 cflops = nops / ( ctime( 1 ) * 1.0d+6 )
800 WRITE( nout, fmt = 9981 ) snames( l ), wtime( 1 ),
801 $ wflops, ctime( 1 ), cflops
807 40
IF( iam.EQ.0 )
THEN
808 WRITE( nout, fmt = 9995 )
809 WRITE( nout, fmt = * )
810 WRITE( nout, fmt = 9986 ) j
815 CALL blacs_gridexit( ictxt )
820 WRITE( nout, fmt = * )
821 WRITE( nout, fmt = 9985 )
822 WRITE( nout, fmt = * )
827 9999
FORMAT(
'ILLEGAL ', a,
': ', a,
' = ', i10,
828 $
' should be at least 1' )
829 9998
FORMAT(
'ILLEGAL GRID: NPROW*NPCOL = ', i4,
830 $
'. It can be at most', i4 )
831 9997
FORMAT(
'Bad ', a,
' parameters: going on to next test case.' )
832 9996
FORMAT( 2x,
'Test number ', i2 ,
' started on a ', i4,
' x ',
833 $ i4,
' process grid.' )
834 9995
FORMAT( 2x,
' ------------------------------------------------',
835 $
'-------------------' )
836 9994
FORMAT( 2x,
' M N K SIDE UPLO TRANSA ',
838 9993
FORMAT( 5x,i6,1x,i6,1x,i6,6x,a1,5x,a1,7x,a1,7x,a1,5x,a1 )
839 9992
FORMAT( 2x,
' IA JA MA NA IMBA INBA',
840 $
' MBA NBA RSRCA CSRCA' )
841 9991
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
843 9990
FORMAT( 2x,
' IB JB MB NB IMBB INBB',
844 $
' MBB NBB RSRCB CSRCB' )
845 9989
FORMAT( 2x,
' IC JC MC NC IMBC INBC',
846 $
' MBC NBC RSRCC CSRCC' )
847 9988
FORMAT(
'Not enough memory for this test: going on to',
848 $
' next test case.' )
849 9987
FORMAT(
'Not enough memory. Need: ', i12 )
850 9986
FORMAT( 2x,
'Test number ', i2,
' completed.' )
851 9985
FORMAT( 2x,
'End of Tests.' )
852 9984
FORMAT( 2x,
'Tests started.' )
853 9983
FORMAT( 5x, a,
' ***** ', a,
' has an incorrect value: ',
855 9982
FORMAT( 2x,
' ***** Operation not supported, error code: ',
857 9981
FORMAT( 2x,
'| ', a, 2x, f13.3, 2x, f13.3, 2x, f13.3, 2x, f13.3 )
858 9980
FORMAT( 2x,
' WALL time (s) WALL Mflops ',
859 $
' CPU time (s) CPU Mflops' )
866 SUBROUTINE psbla3timinfo( SUMMRY, NOUT, NMAT, DIAGVAL, SIDEVAL,
867 $ TRNAVAL, TRNBVAL, UPLOVAL, MVAL,
868 $ NVAL, KVAL, MAVAL, NAVAL, IMBAVAL,
869 $ MBAVAL, INBAVAL, NBAVAL, RSCAVAL,
870 $ CSCAVAL, IAVAL, JAVAL, MBVAL, NBVAL,
871 $ IMBBVAL, MBBVAL, INBBVAL, NBBVAL,
872 $ RSCBVAL, CSCBVAL, IBVAL, JBVAL,
873 $ MCVAL, NCVAL, IMBCVAL, MBCVAL,
874 $ INBCVAL, NBCVAL, RSCCVAL, CSCCVAL,
875 $ ICVAL, JCVAL, LDVAL, NGRIDS, PVAL,
876 $ LDPVAL, QVAL, LDQVAL, NBLOG, LTEST,
877 $ IAM, NPROCS, ALPHA, BETA, WORK )
885 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NBLOG, NGRIDS,
890 CHARACTER*( * ) SUMMRY
891 CHARACTER*1 DIAGVAL( LDVAL ), SIDEVAL( LDVAL ),
892 $ TRNAVAL( LDVAL ), TRNBVAL( LDVAL ),
895 INTEGER CSCAVAL( LDVAL ), CSCBVAL( LDVAL ),
896 $ csccval( ldval ), iaval( ldval ),
897 $ ibval( ldval ), icval( ldval ),
898 $ imbaval( ldval ), imbbval( ldval ),
899 $ imbcval( ldval ), inbaval( ldval ),
900 $ inbbval( ldval ), inbcval( ldval ),
901 $ javal( ldval ), jbval( ldval ), jcval( ldval ),
902 $ kval( ldval ), maval( ldval ), mbaval( ldval ),
903 $ mbbval( ldval ), mbcval( ldval ),
904 $ mbval( ldval ), mcval( ldval ), mval( ldval ),
905 $ naval( ldval ), nbaval( ldval ),
906 $ nbbval( ldval ), nbcval( ldval ),
907 $ nbval( ldval ), ncval( ldval ), nval( ldval ),
908 $ pval( ldpval ), qval( ldqval ),
909 $ rscaval( ldval ), rscbval( ldval ),
910 $ rsccval( ldval ), work( * )
1182 PARAMETER ( NIN = 11, nsubs = 8 )
1190 CHARACTER*79 USRINFO
1193 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1194 $ blacs_gridinit, blacs_setup,
icopy, igebr2d,
1195 $ igebs2d, sgebr2d, sgebs2d
1198 INTRINSIC char, ichar,
max,
min
1201 CHARACTER*7 SNAMES( NSUBS )
1202 COMMON /SNAMEC/SNAMES
1213 OPEN( nin, file=
'PSBLAS3TIM.dat', status=
'OLD' )
1214 READ( nin, fmt = * ) summry
1219 READ( nin, fmt = 9999 ) usrinfo
1223 READ( nin, fmt = * ) summry
1224 READ( nin, fmt = * ) nout
1225 IF( nout.NE.0 .AND. nout.NE.6 )
1226 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1232 READ( nin, fmt = * ) nblog
1238 READ( nin, fmt = * ) ngrids
1239 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1240 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1242 ELSE IF( ngrids.GT.ldqval )
THEN
1243 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1249 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1250 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1254 READ( nin, fmt = * ) alpha
1255 READ( nin, fmt = * ) beta
1259 READ( nin, fmt = * ) nmat
1260 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1261 WRITE( nout, fmt = 9998 )
'Tests', ldval
1267 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1268 READ( nin, fmt = * ) ( sideval( i ), i = 1, nmat )
1269 READ( nin, fmt = * ) ( trnaval( i ), i = 1, nmat )
1270 READ( nin, fmt = * ) ( trnbval( i ), i = 1, nmat )
1271 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1272 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1273 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1274 READ( nin, fmt = * ) ( kval( i ), i = 1, nmat )
1275 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1276 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1277 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1278 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1279 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1280 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1281 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1282 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1283 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1284 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1285 READ( nin, fmt = * ) ( mbval( i ), i = 1, nmat )
1286 READ( nin, fmt = * ) ( nbval( i ), i = 1, nmat )
1287 READ( nin, fmt = * ) ( imbbval( i ), i = 1, nmat )
1288 READ( nin, fmt = * ) ( inbbval( i ), i = 1, nmat )
1289 READ( nin, fmt = * ) ( mbbval( i ), i = 1, nmat )
1290 READ( nin, fmt = * ) ( nbbval( i ), i = 1, nmat )
1291 READ( nin, fmt = * ) ( rscbval( i ), i = 1, nmat )
1292 READ( nin, fmt = * ) ( cscbval( i ), i = 1, nmat )
1293 READ( nin, fmt = * ) ( ibval( i ), i = 1, nmat )
1294 READ( nin, fmt = * ) ( jbval( i ), i = 1, nmat )
1295 READ( nin, fmt = * ) ( mcval( i ), i = 1, nmat )
1296 READ( nin, fmt = * ) ( ncval( i ), i = 1, nmat )
1297 READ( nin, fmt = * ) ( imbcval( i ), i = 1, nmat )
1298 READ( nin, fmt = * ) ( inbcval( i ), i = 1, nmat )
1299 READ( nin, fmt = * ) ( mbcval( i ), i = 1, nmat )
1300 READ( nin, fmt = * ) ( nbcval( i ), i = 1, nmat )
1301 READ( nin, fmt = * ) ( rsccval( i ), i = 1, nmat )
1302 READ( nin, fmt = * ) ( csccval( i ), i = 1, nmat )
1303 READ( nin, fmt = * ) ( icval( i ), i = 1, nmat )
1304 READ( nin, fmt = * ) ( jcval( i ), i = 1, nmat )
1310 ltest( i ) = .false.
1313 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1315 IF( snamet.EQ.snames( i ) )
1319 WRITE( nout, fmt = 9995 )snamet
1335 IF( nprocs.LT.1 )
THEN
1338 nprocs =
max( nprocs, pval( i )*qval( i ) )
1340 CALL blacs_setup( iam, nprocs )
1346 CALL blacs_get( -1, 0, ictxt )
1347 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1351 CALL sgebs2d( ictxt,
'All',
' ', 1, 1, alpha, 1 )
1352 CALL sgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1357 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1361 work( i ) = ichar( diagval( j ) )
1362 work( i+1 ) = ichar( sideval( j ) )
1363 work( i+2 ) = ichar( trnaval( j ) )
1364 work( i+3 ) = ichar( trnbval( j ) )
1365 work( i+4 ) = ichar( uploval( j ) )
1368 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1370 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1372 CALL icopy( nmat, mval, 1, work( i ), 1 )
1374 CALL icopy( nmat, nval, 1, work( i ), 1 )
1376 CALL icopy( nmat, kval, 1, work( i ), 1 )
1378 CALL icopy( nmat, maval, 1, work( i ), 1 )
1380 CALL icopy( nmat, naval, 1, work( i ), 1 )
1382 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1384 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1386 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1388 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1390 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1392 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1394 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1396 CALL icopy( nmat, javal, 1, work( i ), 1 )
1398 CALL icopy( nmat, mbval, 1, work( i ), 1 )
1400 CALL icopy( nmat, nbval, 1, work( i ), 1 )
1402 CALL icopy( nmat, imbbval, 1, work( i ), 1 )
1404 CALL icopy( nmat, inbbval, 1, work( i ), 1 )
1406 CALL icopy( nmat, mbbval, 1, work( i ), 1 )
1408 CALL icopy( nmat, nbbval, 1, work( i ), 1 )
1410 CALL icopy( nmat, rscbval, 1, work( i ), 1 )
1412 CALL icopy( nmat, cscbval, 1, work( i ), 1 )
1414 CALL icopy( nmat, ibval, 1, work( i ), 1 )
1416 CALL icopy( nmat, jbval, 1, work( i ), 1 )
1418 CALL icopy( nmat, mcval, 1, work( i ), 1 )
1420 CALL icopy( nmat, ncval, 1, work( i ), 1 )
1422 CALL icopy( nmat, imbcval, 1, work( i ), 1 )
1424 CALL icopy( nmat, inbcval, 1, work( i ), 1 )
1426 CALL icopy( nmat, mbcval, 1, work( i ), 1 )
1428 CALL icopy( nmat, nbcval, 1, work( i ), 1 )
1430 CALL icopy( nmat, rsccval, 1, work( i ), 1 )
1432 CALL icopy( nmat, csccval, 1, work( i ), 1 )
1434 CALL icopy( nmat, icval, 1, work( i ), 1 )
1436 CALL icopy( nmat, jcval, 1, work( i ), 1 )
1440 IF( ltest( j ) )
THEN
1448 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1452 WRITE( nout, fmt = 9999 )
1453 $
'Level 3 PBLAS timing program.'
1454 WRITE( nout, fmt = 9999 ) usrinfo
1455 WRITE( nout, fmt = * )
1456 WRITE( nout, fmt = 9999 )
1457 $
'Tests of the real single precision '//
1459 WRITE( nout, fmt = * )
1460 WRITE( nout, fmt = 9992 ) nmat
1461 WRITE( nout, fmt = 9986 ) nblog
1462 WRITE( nout, fmt = 9991 ) ngrids
1463 WRITE( nout, fmt = 9989 )
1464 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1466 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 6,
1467 $
min( 10, ngrids ) )
1469 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 11,
1470 $
min( 15, ngrids ) )
1472 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 16, ngrids )
1473 WRITE( nout, fmt = 9989 )
1474 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1476 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 6,
1477 $
min( 10, ngrids ) )
1479 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 11,
1480 $
min( 15, ngrids ) )
1482 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 16, ngrids )
1483 WRITE( nout, fmt = 9994 ) alpha
1484 WRITE( nout, fmt = 9993 ) beta
1485 IF( ltest( 1 ) )
THEN
1486 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... Yes'
1488 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... No '
1491 IF( ltest( i ) )
THEN
1492 WRITE( nout, fmt = 9987 ) snames( i ),
' ... Yes'
1494 WRITE( nout, fmt = 9987 ) snames( i ),
' ... No '
1497 WRITE( nout, fmt = * )
1504 $
CALL blacs_setup( iam, nprocs )
1509 CALL blacs_get( -1, 0, ictxt )
1510 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1512 CALL sgebr2d( ictxt,
'All',
' ', 1, 1, alpha, 1, 0, 0 )
1513 CALL sgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1515 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1520 i = 2*ngrids + 38*nmat + nsubs
1521 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1525 diagval( j ) = char( work( i ) )
1526 sideval( j ) = char( work( i+1 ) )
1527 trnaval( j ) = char( work( i+2 ) )
1528 trnbval( j ) = char( work( i+3 ) )
1529 uploval( j ) = char( work( i+4 ) )
1532 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1534 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1536 CALL icopy( nmat, work( i ), 1, mval, 1 )
1538 CALL icopy( nmat, work( i ), 1, nval, 1 )
1540 CALL icopy( nmat, work( i ), 1, kval, 1 )
1542 CALL icopy( nmat, work( i ), 1, maval, 1 )
1544 CALL icopy( nmat, work( i ), 1, naval, 1 )
1546 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1548 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1550 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1552 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1554 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1556 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1558 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1560 CALL icopy( nmat, work( i ), 1, javal, 1 )
1562 CALL icopy( nmat, work( i ), 1, mbval, 1 )
1564 CALL icopy( nmat, work( i ), 1, nbval, 1 )
1566 CALL icopy( nmat, work( i ), 1, imbbval, 1 )
1568 CALL icopy( nmat, work( i ), 1, inbbval, 1 )
1570 CALL icopy( nmat, work( i ), 1, mbbval, 1 )
1572 CALL icopy( nmat, work( i ), 1, nbbval, 1 )
1574 CALL icopy( nmat, work( i ), 1, rscbval, 1 )
1576 CALL icopy( nmat, work( i ), 1, cscbval, 1 )
1578 CALL icopy( nmat, work( i ), 1, ibval, 1 )
1580 CALL icopy( nmat, work( i ), 1, jbval, 1 )
1582 CALL icopy( nmat, work( i ), 1, mcval, 1 )
1584 CALL icopy( nmat, work( i ), 1, ncval, 1 )
1586 CALL icopy( nmat, work( i ), 1, imbcval, 1 )
1588 CALL icopy( nmat, work( i ), 1, inbcval, 1 )
1590 CALL icopy( nmat, work( i ), 1, mbcval, 1 )
1592 CALL icopy( nmat, work( i ), 1, nbcval, 1 )
1594 CALL icopy( nmat, work( i ), 1, rsccval, 1 )
1596 CALL icopy( nmat, work( i ), 1, csccval, 1 )
1598 CALL icopy( nmat, work( i ), 1, icval, 1 )
1600 CALL icopy( nmat, work( i ), 1, jcval, 1 )
1604 IF( work( i ).EQ.1 )
THEN
1607 ltest( j ) = .false.
1614 CALL blacs_gridexit( ictxt )
1618 120
WRITE( nout, fmt = 9997 )
1620 IF( nout.NE.6 .AND. nout.NE.0 )
1622 CALL blacs_abort( ictxt, 1 )
1627 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1629 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1630 9996
FORMAT( a7, l2 )
1631 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1632 $ /
' ******* TESTS ABANDONED *******' )
1633 9994
FORMAT( 2x,
'Alpha : ', g16.6 )
1634 9993
FORMAT( 2x,
'Beta : ', g16.6 )
1635 9992
FORMAT( 2x,
'Number of Tests : ', i6 )
1636 9991
FORMAT( 2x,
'Number of process grids : ', i6 )
1637 9990
FORMAT( 2x,
' : ', 5i6 )
1638 9989
FORMAT( 2x, a1,
' : ', 5i6 )
1639 9988
FORMAT( 2x,
'Routines to be tested : ', a, a8 )
1640 9987
FORMAT( 2x,
' ', a, a8 )
1641 9986
FORMAT( 2x,
'Logical block size : ', i6 )