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 )