690 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
691 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
692 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
693 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
694 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
695 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
696 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
697 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
698 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
699 $ QVAL, LDQVAL, NBLOG, LTEST, IAM, NPROCS,
700 $ ALPHA, BETA, WORK )
708 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NBLOG, NGRIDS
710 DOUBLE PRECISION ALPHA, BETA
713 CHARACTER*( * ) SUMMRY
714 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
717 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
718 $ CSCYVAL( LDVAL ), IAVAL( LDVAL ),
719 $ imbaval( ldval ), imbxval( ldval ),
720 $ imbyval( ldval ), inbaval( ldval ),
721 $ inbxval( ldval ), inbyval( ldval ),
722 $ incxval( ldval ), incyval( ldval ),
723 $ ixval( ldval ), iyval( ldval
724 $ jxval( ldval ), jyval( ldval ), maval( ldval ),
725 $ mbaval( ldval ), mbxval( ldval ),
726 $ mbyval( ldval ), mval( ldval ), mxval( ldval ),
727 $ myval( ldval ), naval( ldval ),
728 $ nbaval( ldval ), nbxval( ldval ),
729 $ nbyval( ldval ), nval( ldval ), nxval( ldval ),
730 $ nyval( ldval ), pval( ldpval ), qval( ldqval ),
731 $ rscaval( ldval ), rscxval( ldval ),
732 $ rscyval( ldval ), work( * )
999 PARAMETER ( NIN = 11, nsubs = 7 )
1007 CHARACTER*79 USRINFO
1015 INTRINSIC char, ichar,
max,
min
1018 CHARACTER*7 SNAMES( NSUBS )
1019 COMMON /SNAMEC/SNAMES
1030 OPEN( nin, file=
'PDBLAS2TIM.dat', status=
'OLD' )
1031 READ( nin, fmt = * ) summry
1036 READ( nin, fmt = 9999 ) usrinfo
1040 READ( nin, fmt = * ) summry
1041 READ( nin, fmt = * ) nout
1042 IF( nout.NE.0 .AND. nout.NE.6 )
1043 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1049 READ( nin, fmt = * ) nblog
1055 READ( nin, fmt = * ) ngrids
1056 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1057 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1059 ELSE IF( ngrids.GT.ldqval )
THEN
1060 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1066 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1071 READ( nin, fmt = * ) alpha
1072 READ( nin, fmt = * ) beta
1076 READ( nin, fmt = * ) nmat
1077 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1078 WRITE( nout, fmt = 9998 )
'Tests', ldval
1084 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1085 READ( nin, fmt = * ) ( tranval( i ), i = 1, nmat )
1086 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1087 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1088 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1089 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1090 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1091 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1092 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1093 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1094 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1095 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1096 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1097 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1098 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1099 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
1100 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
1101 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
1102 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
1103 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
1104 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
1105 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
1106 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
1107 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
1108 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
1109 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
1110 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
1111 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
1112 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
1113 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
1114 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
1115 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
1116 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
1117 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
1118 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
1119 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
1120 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
1126 ltest( i ) = .false.
1129 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1131 IF( snamet.EQ.snames( i ) )
1135 WRITE( nout, fmt = 9995 )snamet
1154 nprocs =
max( nprocs, pval( i )*qval( i ) )
1156 CALL blacs_setup( iam, nprocs )
1162 CALL blacs_get( -1, 0, ictxt )
1168 CALL dgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1173 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1177 work( i ) = ichar( diagval( j ) )
1178 work( i+1 ) = ichar( tranval( j ) )
1179 work( i+2 ) = ichar( uploval( j ) )
1182 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1184 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1186 CALL icopy( nmat, mval, 1, work( i ), 1 )
1188 CALL icopy( nmat, nval, 1, work( i ), 1 )
1190 CALL icopy( nmat, maval, 1, work( i ), 1 )
1192 CALL icopy( nmat, naval, 1, work( i ), 1 )
1194 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1196 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1198 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1200 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1202 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1204 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1206 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1208 CALL icopy( nmat, javal, 1, work( i ), 1 )
1210 CALL icopy( nmat, mxval, 1, work( i ), 1 )
1212 CALL icopy( nmat, nxval, 1, work( i ), 1 )
1214 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
1216 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
1218 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
1220 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
1222 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
1224 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
1226 CALL icopy( nmat, ixval, 1, work( i ), 1 )
1228 CALL icopy( nmat, jxval, 1, work( i ), 1 )
1230 CALL icopy( nmat, incxval, 1, work( i ), 1 )
1232 CALL icopy( nmat, myval, 1, work( i ), 1 )
1234 CALL icopy( nmat, nyval, 1, work( i ), 1 )
1236 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
1238 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
1240 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
1242 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
1244 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
1246 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
1248 CALL icopy( nmat, iyval, 1, work( i ), 1 )
1250 CALL icopy( nmat, jyval, 1, work( i ), 1 )
1252 CALL icopy( nmat, incyval, 1, work( i ), 1 )
1256 IF( ltest( j ) )
THEN
1264 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1268 WRITE( nout, fmt = 9999 )
1269 $
'Level 2 PBLAS timing program.'
1270 WRITE( nout, fmt = 9999 ) usrinfo
1271 WRITE( nout, fmt = * )
1272 WRITE( nout, fmt = 9999 )
1273 $
'Tests of the real double precision '//
1275 WRITE( nout, fmt = * )
1276 WRITE( nout, fmt = 9992 ) nmat
1277 WRITE( nout, fmt = 9986 ) nblog
1278 WRITE( nout, fmt = 9991 ) ngrids
1279 WRITE( nout, fmt = 9989 )
1280 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1282 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 6,
1283 $
min( 10, ngrids ) )
1285 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 11,
1286 $
min( 15, ngrids ) )
1288 $
WRITE( nout, fmt = 9990 ) ( pval(i), i = 16, ngrids )
1289 WRITE( nout, fmt = 9989 )
1290 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1292 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 6,
1293 $
min( 10, ngrids ) )
1295 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 11,
1296 $
min( 15, ngrids ) )
1298 $
WRITE( nout, fmt = 9990 ) ( qval(i), i = 16, ngrids )
1299 WRITE( nout, fmt = 9994 )
alpha
1300 WRITE( nout, fmt = 9993 ) beta
1301 IF( ltest( 1 ) )
THEN
1302 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... Yes'
1304 WRITE( nout, fmt = 9988 ) snames( 1 ),
' ... No '
1307 IF( ltest( i ) )
THEN
1308 WRITE( nout, fmt = 9987 ) snames( i ),
' ... Yes'
1310 WRITE( nout, fmt = 9987 ) snames( i ),
' ... No '
1313 WRITE( nout, fmt = * )
1320 $
CALL blacs_setup( iam, nprocs )
1325 CALL blacs_get( -1, 0, ictxt )
1328 CALL dgebr2d( ictxt,
'All',
' ', 1, 1,
alpha, 1, 0, 0 )
1329 CALL dgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1331 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1336 i = 2*ngrids + 37*nmat + nsubs
1337 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1341 diagval( j ) = char( work( i ) )
1342 tranval( j ) = char( work( i+1 ) )
1343 uploval( j ) = char( work( i+2 ) )
1346 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1348 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1350 CALL icopy( nmat, work( i ), 1, mval, 1 )
1352 CALL icopy( nmat, work( i ), 1, nval, 1 )
1354 CALL icopy( nmat, work( i ), 1, maval, 1 )
1356 CALL icopy( nmat, work( i ), 1, naval, 1 )
1358 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1360 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1362 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1364 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1366 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1368 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1370 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1372 CALL icopy( nmat, work( i ), 1, javal, 1 )
1374 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1376 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1378 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1380 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1382 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1384 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1388 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1390 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1392 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1394 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1396 CALL icopy( nmat, work( i ), 1, myval, 1 )
1398 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1400 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1402 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1404 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1406 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1408 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1410 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1412 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1414 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1416 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1420 IF( work( i ).EQ.1 )
THEN
1423 ltest( j ) = .false.
1434 120
WRITE( nout, fmt = 9997 )
1436 IF( nout.NE.6 .AND. nout.NE.0 )
1438 CALL blacs_abort( ictxt, 1 )
1443 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1445 9997
FORMAT(
' Illegal input in file ',40a
'. Aborting run.' )
1446 9996
FORMAT( a7, l2 )
1447 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1448 $ /
' ******* TESTS ABANDONED *******' )
1449 9994
FORMAT( 2x,
'Alpha : ', g16.6 )
1450 9993
FORMAT( 2x, 'beta :
', G16.6 )
1451 9992 FORMAT( 2X, 'number of tests :
', I6 )
1452 9991 FORMAT( 2X, 'number of process grids :
', I6 )
1453 9990 FORMAT( 2X, ' :
', 5I6 )
1454 9989 FORMAT( 2X, A1, ' :
', 5I6 )
1455 9988 FORMAT( 2X, 'routines to be
', A, A8 )
1456 9987 FORMAT( 2X, ' ', a, a8 )
1457 9986
FORMAT( 2x,
'Logical block size : ', i6 )