865 $ TRNAVAL, TRNBVAL, UPLOVAL, MVAL,
866 $ NVAL, KVAL, MAVAL, NAVAL, IMBAVAL,
867 $ MBAVAL, INBAVAL, NBAVAL, RSCAVAL,
868 $ CSCAVAL, IAVAL, JAVAL, MBVAL, NBVAL,
869 $ IMBBVAL, MBBVAL, INBBVAL, NBBVAL,
870 $ RSCBVAL, CSCBVAL, IBVAL, JBVAL,
871 $ MCVAL, NCVAL, IMBCVAL, MBCVAL,
872 $ INBCVAL, NBCVAL, RSCCVAL, CSCCVAL,
873 $ ICVAL, JCVAL, LDVAL, NGRIDS, PVAL,
874 $ LDPVAL, QVAL, LDQVAL, NBLOG, LTEST,
875 $ IAM, NPROCS, ALPHA, BETA, WORK )
883 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NBLOG, NGRIDS,
885 DOUBLE PRECISION ALPHA, BETA
888 CHARACTER*( * ) SUMMRY
889 CHARACTER*1 DIAGVAL( LDVAL ), SIDEVAL( LDVAL ),
890 $ TRNAVAL( LDVAL ), TRNBVAL( LDVAL ),
893 INTEGER CSCAVAL( LDVAL ), CSCBVAL( LDVAL ),
894 $ csccval( ldval ), iaval( ldval ),
895 $ ibval( ldval ), icval( ldval ),
896 $ imbaval( ldval ), imbbval( ldval ),
897 $ imbcval( ldval ), inbaval( ldval ),
898 $ inbbval( ldval ), inbcval( ldval ),
899 $ javal( ldval ), jbval( ldval ), jcval( ldval ),
900 $ kval( ldval ), maval( ldval ), mbaval( ldval ),
901 $ mbbval( ldval ), mbcval( ldval ),
902 $ mbval( ldval ), mcval( ldval ), mval( ldval ),
903 $ naval( ldval ), nbaval( ldval ),
904 $ nbbval( ldval ), nbcval( ldval ),
905 $ nbval( ldval ), ncval( ldval ), nval( ldval ),
906 $ pval( ldpval ), qval( ldqval ),
907 $ rscaval( ldval ), rscbval( ldval ),
908 $ rsccval( ldval ), work( * )
1180 PARAMETER ( NIN = 11, nsubs = 8 )
1188 CHARACTER*79 USRINFO
1191 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1192 $ blacs_gridinit, blacs_setup, dgebr2d, dgebs2d,
1193 $
icopy, igebr2d, igebs2d, sgebr2d, sgebs2d
1196 INTRINSIC char, ichar,
max,
min
1199 CHARACTER*7 SNAMES( NSUBS )
1200 COMMON /SNAMEC/SNAMES
1211 OPEN( nin, file=
'PDBLAS3TIM.dat', status=
'OLD' )
1212 READ( nin, fmt = * ) summry
1217 READ( nin, fmt = 9999 ) usrinfo
1221 READ( nin, fmt = * ) summry
1222 READ( nin, fmt = * ) nout
1223 IF( nout.NE.0 .AND. nout.NE.6 )
1224 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1230 READ( nin, fmt = * ) nblog
1236 READ( nin, fmt = * ) ngrids
1237 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1238 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1240 ELSE IF( ngrids.GT.ldqval )
THEN
1241 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1247 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1248 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1252 READ( nin, fmt = * ) alpha
1253 READ( nin, fmt = * ) beta
1257 READ( nin, fmt = * ) nmat
1258 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1259 WRITE( nout, fmt = 9998 )
'Tests', ldval
1265 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1266 READ( nin, fmt = * ) ( sideval( i ), i = 1, nmat )
1267 READ( nin, fmt = * ) ( trnaval( i ), i = 1, nmat )
1268 READ( nin, fmt = * ) ( trnbval( i ), i = 1, nmat )
1269 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1270 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1271 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1272 READ( nin, fmt = * ) ( kval( i ), i = 1, nmat )
1273 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1274 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1275 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1276 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1277 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1278 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1279 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1280 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1281 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1282 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1283 READ( nin, fmt = * ) ( mbval( i ), i = 1, nmat )
1284 READ( nin, fmt = * ) ( nbval( i ), i = 1, nmat )
1285 READ( nin, fmt = * ) ( imbbval( i ), i = 1, nmat )
1286 READ( nin, fmt = * ) ( inbbval( i ), i = 1, nmat )
1287 READ( nin, fmt = * ) ( mbbval( i ), i = 1, nmat )
1288 READ( nin, fmt = * ) ( nbbval( i ), i = 1, nmat )
1289 READ( nin, fmt = * ) ( rscbval( i ), i = 1, nmat )
1290 READ( nin, fmt = * ) ( cscbval( i ), i = 1, nmat )
1291 READ( nin, fmt = * ) ( ibval( i ), i = 1, nmat )
1292 READ( nin, fmt = * ) ( jbval( i ), i = 1, nmat )
1293 READ( nin, fmt = * ) ( mcval( i ), i = 1, nmat )
1294 READ( nin, fmt = * ) ( ncval( i ), i = 1, nmat )
1295 READ( nin, fmt = * ) ( imbcval( i ), i = 1, nmat )
1296 READ( nin, fmt = * ) ( inbcval( i ), i = 1, nmat )
1297 READ( nin, fmt = * ) ( mbcval( i ), i = 1, nmat )
1298 READ( nin, fmt = * ) ( nbcval( i ), i = 1, nmat )
1299 READ( nin, fmt = * ) ( rsccval( i ), i = 1, nmat )
1300 READ( nin, fmt = * ) ( csccval( i ), i = 1, nmat )
1301 READ( nin, fmt = * ) ( icval( i ), i = 1, nmat )
1302 READ( nin, fmt = * ) ( jcval( i ), i = 1, nmat )
1308 ltest( i ) = .false.
1311 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1313 IF( snamet.EQ.snames( i ) )
1317 WRITE( nout, fmt = 9995 )snamet
1333 IF( nprocs.LT.1 )
THEN
1336 nprocs =
max( nprocs, pval( i )*qval( i ) )
1338 CALL blacs_setup( iam, nprocs )
1344 CALL blacs_get( -1, 0, ictxt )
1345 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1349 CALL dgebs2d( ictxt,
'All',
' ', 1, 1, alpha, 1 )
1350 CALL dgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1355 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1359 work( i ) = ichar( diagval( j ) )
1360 work( i+1 ) = ichar( sideval( j ) )
1361 work( i+2 ) = ichar( trnaval( j ) )
1362 work( i+3 ) = ichar( trnbval( j ) )
1363 work( i+4 ) = ichar( uploval( j ) )
1366 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1368 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1370 CALL icopy( nmat, mval, 1, work( i ), 1 )
1372 CALL icopy( nmat, nval, 1, work( i ), 1 )
1374 CALL icopy( nmat, kval, 1, work( i ), 1 )
1376 CALL icopy( nmat, maval, 1, work( i ), 1 )
1378 CALL icopy( nmat, naval, 1, work( i ), 1 )
1380 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1382 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1384 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1386 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1388 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1390 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1392 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1394 CALL icopy( nmat, javal, 1, work( i ), 1 )
1396 CALL icopy( nmat, mbval, 1, work( i ), 1 )
1398 CALL icopy( nmat, nbval, 1, work( i ), 1 )
1400 CALL icopy( nmat, imbbval, 1, work( i ), 1 )
1402 CALL icopy( nmat, inbbval, 1, work( i ), 1 )
1404 CALL icopy( nmat, mbbval, 1, work( i ), 1 )
1406 CALL icopy( nmat, nbbval, 1, work( i ), 1 )
1408 CALL icopy( nmat, rscbval, 1, work( i ), 1 )
1410 CALL icopy( nmat, cscbval, 1, work( i ), 1 )
1412 CALL icopy( nmat, ibval, 1, work( i ), 1 )
1414 CALL icopy( nmat, jbval, 1, work( i ), 1 )
1416 CALL icopy( nmat, mcval, 1, work( i ), 1 )
1418 CALL icopy( nmat, ncval, 1, work( i ), 1 )
1420 CALL icopy( nmat, imbcval, 1, work( i ), 1 )
1422 CALL icopy( nmat, inbcval, 1, work( i ), 1 )
1424 CALL icopy( nmat, mbcval, 1, work( i ), 1 )
1426 CALL icopy( nmat, nbcval, 1, work( i ), 1 )
1428 CALL icopy( nmat, rsccval, 1, work( i ), 1 )
1430 CALL icopy( nmat, csccval, 1, work( i ), 1 )
1432 CALL icopy( nmat, icval, 1, work( i ), 1 )
1434 CALL icopy( nmat, jcval, 1, work( i ), 1 )
1438 IF( ltest( j ) )
THEN
1446 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1450 WRITE( nout, fmt = 9999 )
1451 $
'Level 3 PBLAS timing program.'
1452 WRITE( nout, fmt = 9999 ) usrinfo
1453 WRITE( nout, fmt = * )
1454 WRITE( nout, fmt = 9999 )
1455 $
'Tests of the real double precision '//
1457 WRITE( nout, fmt = * )
1458 WRITE( nout, fmt = 9992 ) nmat
1459 WRITE( nout, fmt = 9986 ) nblog
1460 WRITE( nout, fmt = 9991 ) ngrids
1461 WRITE( nout, fmt = 9989 )
1462 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1464 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 6,
1465 $
min( 10, ngrids ) )
1467 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 11,
1468 $
min( 15, ngrids ) )
1470 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 16, ngrids )
1471 WRITE( nout, fmt = 9989 )
1472 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1474 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 6,
1475 $
min( 10, ngrids ) )
1477 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 11,
1478 $
min( 15, ngrids ) )
1480 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 16, ngrids )
1481 WRITE( nout, fmt = 9994 ) alpha
1482 WRITE( nout, fmt = 9993 ) beta
1483 IF( ltest( 1 ) )
THEN
1484 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... Yes'
1486 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... No '
1489 IF( ltest( i ) )
THEN
1490 WRITE( nout, fmt = 9987 ) snames( i ),
' ... Yes'
1492 WRITE( nout, fmt = 9987 ) snames( i ),
' ... No '
1495 WRITE( nout, fmt = * )
1502 $
CALL blacs_setup( iam, nprocs )
1507 CALL blacs_get( -1, 0, ictxt )
1508 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1510 CALL dgebr2d( ictxt,
'All',
' ', 1, 1, alpha, 1, 0, 0 )
1511 CALL dgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1513 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1518 i = 2*ngrids + 38*nmat + nsubs
1519 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1523 diagval( j ) = char( work( i ) )
1524 sideval( j ) = char( work( i+1 ) )
1525 trnaval( j ) = char( work( i+2 ) )
1526 trnbval( j ) = char( work( i+3 ) )
1527 uploval( j ) = char( work( i+4 ) )
1530 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1532 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1534 CALL icopy( nmat, work( i ), 1, mval, 1 )
1536 CALL icopy( nmat, work( i ), 1, nval, 1 )
1538 CALL icopy( nmat, work( i ), 1, kval, 1 )
1540 CALL icopy( nmat, work( i ), 1, maval, 1 )
1542 CALL icopy( nmat, work( i ), 1, naval, 1 )
1544 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1546 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1548 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1550 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1552 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1554 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1556 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1558 CALL icopy( nmat, work( i ), 1, javal, 1 )
1560 CALL icopy( nmat, work( i ), 1, mbval, 1 )
1562 CALL icopy( nmat, work( i ), 1, nbval, 1 )
1564 CALL icopy( nmat, work( i ), 1, imbbval, 1 )
1566 CALL icopy( nmat, work( i ), 1, inbbval, 1 )
1568 CALL icopy( nmat, work( i ), 1, mbbval, 1 )
1570 CALL icopy( nmat, work( i ), 1, nbbval, 1 )
1572 CALL icopy( nmat, work( i ), 1, rscbval, 1 )
1574 CALL icopy( nmat, work( i ), 1, cscbval, 1 )
1576 CALL icopy( nmat, work( i ), 1, ibval, 1 )
1578 CALL icopy( nmat, work( i ), 1, jbval, 1 )
1580 CALL icopy( nmat, work( i ), 1, mcval, 1 )
1582 CALL icopy( nmat, work( i ), 1, ncval, 1 )
1584 CALL icopy( nmat, work( i ), 1, imbcval, 1 )
1586 CALL icopy( nmat, work( i ), 1, inbcval, 1 )
1588 CALL icopy( nmat, work( i ), 1, mbcval, 1 )
1590 CALL icopy( nmat, work( i ), 1, nbcval, 1 )
1592 CALL icopy( nmat, work( i ), 1, rsccval, 1 )
1594 CALL icopy( nmat, work( i ), 1, csccval, 1 )
1596 CALL icopy( nmat, work( i ), 1, icval, 1 )
1598 CALL icopy( nmat, work( i ), 1, jcval, 1 )
1602 IF( work( i ).EQ.1 )
THEN
1605 ltest( j ) = .false.
1612 CALL blacs_gridexit( ictxt )
1616 120
WRITE( nout, fmt = 9997 )
1618 IF( nout.NE.6 .AND. nout.NE.0 )
1620 CALL blacs_abort( ictxt, 1 )
1625 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1627 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1628 9996
FORMAT( a7, l2 )
1629 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1630 $ /
' ******* TESTS ABANDONED *******' )
1631 9994
FORMAT( 2x,
'Alpha : ', g16.6 )
1632 9993
FORMAT( 2x,
'Beta : ', g16.6 )
1633 9992
FORMAT( 2x,
'Number of Tests : ', i6 )
1634 9991
FORMAT( 2x,
'Number of process grids : ', i6 )
1635 9990
FORMAT( 2x,
' : ', 5i6 )
1636 9989
FORMAT( 2x, a1,
' : ', 5i6 )
1637 9988
FORMAT( 2x,
'Routines to be tested : ', a, a8 )
1638 9987
FORMAT( 2x,
' ', a, a8 )
1639 9986
FORMAT( 2x,
'Logical block size : ', i6 )