692 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
693 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
694 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
695 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
696 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
697 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
698 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
699 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
700 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
701 $ QVAL, LDQVAL, NBLOG, LTEST, IAM, NPROCS,
702 $ ALPHA, BETA, WORK )
710 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NBLOG, NGRIDS,
715 CHARACTER*( * ) SUMMRY
716 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
719 INTEGER ( LDVAL ), CSCXVAL( LDVAL ),
720 $ CSCYVAL( LDVAL ), IAVAL( LDVAL ),
721 $ imbaval( ldval ), imbxval( ldval ),
722 $ imbyval( ldval ), inbaval( ldval ),
723 $ inbxval( ldval ), inbyval( ldval ),
724 $ incxval( ldval ), incyval( ldval ),
725 $ ixval( ldval ), iyval( ldval ), javal( ldval ),
726 $ jxval( ldval ), jyval( ldval ), maval( ldval ),
727 $ mbaval( ldval ), mbxval( ldval ),
728 $ mbyval( ldval ), mval( ldval ), mxval( ldval ),
729 $ myval( ldval ), naval( ldval
730 $ nbaval( ldval ), nbxval( ldval ),
731 $ nbyval( ldval ), nval( ldval ), nxval( ldval ),
732 $ nyval( ldval ), pval( ldpval ), qval( ldqval ),
733 $ rscaval( ldval ), rscxval( ldval ),
734 $ rscyval( ldval ), work( * )
1001 PARAMETER ( NIN = 11, nsubs = 7 )
1009 CHARACTER*79 USRINFO
1017 INTRINSIC char, ichar,
max,
min
1020 CHARACTER*7 SNAMES( NSUBS )
1021 COMMON /SNAMEC/SNAMES
1032 OPEN( nin, file=
'PSBLAS2TIM.dat', status=
'OLD' )
1033 READ( nin, fmt = * ) summry
1038 READ( nin, fmt = 9999 ) usrinfo
1042 READ( nin, fmt = * ) summry
1043 READ( nin, fmt = * ) nout
1044 IF( nout.NE.0 .AND. nout.NE.6 )
1045 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1051 READ( nin, fmt = * ) nblog
1057 READ( nin, fmt = * ) ngrids
1058 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1059 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1061 ELSE IF( ngrids.GT.ldqval )
THEN
1062 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1068 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1069 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1073 READ( nin, fmt = * ) alpha
1074 READ( nin, fmt = * ) beta
1078 READ( nin, fmt = * ) nmat
1079 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1080 WRITE( nout, fmt = 9998 )
'Tests', ldval
1086 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1087 READ( nin, fmt = * ) ( tranval( i ), i = 1, nmat )
1088 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1089 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1090 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1091 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1092 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1093 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1094 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1095 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1096 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1097 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1098 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1099 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1100 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1101 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
1102 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
1103 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
1104 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
1105 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
1106 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
1107 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
1108 READ( nin, fmt = * ) ( cscxval( i ), i
1109 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
1110 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
1111 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
1112 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
1113 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
1114 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
1115 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
1116 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
1117 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
1118 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
1119 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
1120 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
1121 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
1122 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
1128 ltest( i ) = .false.
1131 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1133 IF( snamet.EQ.snames( i ) )
1137 WRITE( nout, fmt = 9995 )snamet
1153 IF( nprocs.LT.1 )
THEN
1156 nprocs =
max( nprocs, pval( i )*qval( i ) )
1158 CALL blacs_setup( iam, nprocs )
1164 CALL blacs_get( -1, 0, ictxt )
1170 CALL sgebs2d( ictxt,
'All', '
', 1, 1, BETA, 1 )
1175 CALL IGEBS2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3 )
1179 WORK( I ) = ICHAR( DIAGVAL( J ) )
1180 WORK( I+1 ) = ICHAR( TRANVAL( J ) )
1181 WORK( I+2 ) = ICHAR( UPLOVAL( J ) )
1184 CALL ICOPY( NGRIDS, PVAL, 1, WORK( I ), 1 )
1186 CALL ICOPY( NGRIDS, QVAL, 1, WORK( I ), 1 )
1188 CALL ICOPY( NMAT, MVAL, 1, WORK( I ), 1 )
1190 CALL ICOPY( NMAT, NVAL, 1, WORK( I ), 1 )
1192 CALL ICOPY( NMAT, MAVAL, 1, WORK( I ), 1 )
1194 CALL ICOPY( NMAT, NAVAL, 1, WORK( I ), 1 )
1196 CALL ICOPY( NMAT, IMBAVAL, 1, WORK( I ), 1 )
1198 CALL ICOPY( NMAT, INBAVAL, 1, WORK( I ), 1 )
1200 CALL ICOPY( NMAT, MBAVAL, 1, WORK( I ), 1 )
1202 CALL ICOPY( NMAT, NBAVAL, 1, WORK( I ), 1 )
1204 CALL ICOPY( NMAT, RSCAVAL, 1, WORK( I ), 1 )
1206 CALL ICOPY( NMAT, CSCAVAL, 1, WORK( I ), 1 )
1208 CALL ICOPY( NMAT, IAVAL, 1, WORK( I ), 1 )
1210 CALL ICOPY( NMAT, JAVAL, 1, WORK( I ), 1 )
1212 CALL ICOPY( NMAT, MXVAL, 1, WORK( I ), 1 )
1214 CALL ICOPY( NMAT, NXVAL, 1, WORK( I ), 1 )
1216 CALL ICOPY( NMAT, IMBXVAL, 1, WORK( I ), 1 )
1218 CALL ICOPY( NMAT, INBXVAL, 1, WORK( I ), 1 )
1220 CALL ICOPY( NMAT, MBXVAL, 1, WORK( I ), 1 )
1222 CALL ICOPY( NMAT, NBXVAL, 1, WORK( I ), 1 )
1224 CALL ICOPY( NMAT, RSCXVAL, 1, WORK( I ), 1 )
1226 CALL ICOPY( NMAT, CSCXVAL, 1, WORK( I ), 1 )
1228 CALL ICOPY( NMAT, IXVAL, 1, WORK( I ), 1 )
1230 CALL ICOPY( NMAT, JXVAL, 1, WORK( I ), 1 )
1232 CALL ICOPY( NMAT, INCXVAL, 1, WORK( I ), 1 )
1234 CALL ICOPY( NMAT, MYVAL, 1, WORK( I ), 1 )
1236 CALL ICOPY( NMAT, NYVAL, 1, WORK( I ), 1 )
1238 CALL ICOPY( NMAT, IMBYVAL, 1, WORK( I ), 1 )
1240 CALL ICOPY( NMAT, INBYVAL, 1, WORK( I ), 1 )
1242 CALL ICOPY( NMAT, MBYVAL, 1, WORK( I ), 1 )
1244 CALL ICOPY( NMAT, NBYVAL, 1, WORK( I ), 1 )
1246 CALL ICOPY( NMAT, RSCYVAL, 1, WORK( I ), 1 )
1248 CALL ICOPY( NMAT, CSCYVAL, 1, WORK( I ), 1 )
1250 CALL ICOPY( NMAT, IYVAL, 1, WORK( I ), 1 )
1252 CALL ICOPY( NMAT, JYVAL, 1, WORK( I ), 1 )
1254 CALL ICOPY( NMAT, INCYVAL, 1, WORK( I ), 1 )
1258 IF( LTEST( J ) ) THEN
1266 CALL IGEBS2D( ICTXT, 'all
', ' ', I, 1, WORK, I )
1270 WRITE( NOUT, FMT = 9999 )
1271 $ 'level 2 pblas timing program.
'
1272 WRITE( NOUT, FMT = 9999 ) USRINFO
1273 WRITE( NOUT, FMT = * )
1274 WRITE( NOUT, FMT = 9999 )
1275 $ 'tests of
the real single precision
'//
1277 WRITE( NOUT, FMT = * )
1278 WRITE( NOUT, FMT = 9992 ) NMAT
1279 WRITE( NOUT, FMT = 9986 ) NBLOG
1280 WRITE( NOUT, FMT = 9991 ) NGRIDS
1281 WRITE( NOUT, FMT = 9989 )
1282 $ 'p
', ( PVAL(I), I = 1, MIN(NGRIDS, 5) )
1284 $ WRITE( NOUT, FMT = 9990 ) ( PVAL(I), I = 6,
1285 $ MIN( 10, NGRIDS ) )
1287 $ WRITE( NOUT, FMT = 9990 ) ( PVAL(I), I = 11,
1288 $ MIN( 15, NGRIDS ) )
1290 $ WRITE( NOUT, FMT = 9990 ) ( PVAL(I), I = 16, NGRIDS )
1291 WRITE( NOUT, FMT = 9989 )
1292 $ 'q
', ( QVAL(I), I = 1, MIN(NGRIDS, 5) )
1294 $ WRITE( NOUT, FMT = 9990 ) ( QVAL(I), I = 6,
1295 $ MIN( 10, NGRIDS ) )
1297 $ WRITE( NOUT, FMT = 9990 ) ( QVAL(I), I = 11,
1298 $ MIN( 15, NGRIDS ) )
1300 $ WRITE( NOUT, FMT = 9990 ) ( QVAL(I), I = 16, NGRIDS )
1301 WRITE( NOUT, FMT = 9994 ) ALPHA
1302 WRITE( NOUT, FMT = 9993 ) BETA
1303 IF( LTEST( 1 ) ) THEN
1304 WRITE( NOUT, FMT = 9988 ) SNAMES( 1 ), ' ... yes
'
1306 WRITE( NOUT, FMT = 9988 ) SNAMES( 1 ), ' ... no
'
1309 IF( LTEST( I ) ) THEN
1310 WRITE( NOUT, FMT = 9987 ) SNAMES( I ), ' ... yes
'
1312 WRITE( NOUT, FMT = 9987 ) SNAMES( I ), ' ... no
'
1315 WRITE( NOUT, FMT = * )
1322 $ CALL BLACS_SETUP( IAM, NPROCS )
1327 CALL BLACS_GET( -1, 0, ICTXT )
1328 CALL BLACS_GRIDINIT( ICTXT, 'row-major', 1, nprocs )
1330 CALL sgebr2d( ictxt,
'All',
' ', 1, 1,
alpha, 1, 0, 0 )
1331 CALL sgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1333 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1338 i = 2*ngrids + 37*nmat + nsubs
1339 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1343 diagval( j ) = char( work( i ) )
1344 tranval( j ) = char( work( i+1 ) )
1345 uploval( j ) = char( work( i+2 ) )
1348 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1350 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1352 CALL icopy( nmat, work( i ), 1, mval, 1 )
1354 CALL icopy( nmat, work( i ), 1, nval, 1 )
1356 CALL icopy( nmat, work( i ), 1, maval, 1 )
1358 CALL icopy( nmat, work( i ), 1, naval, 1 )
1360 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1362 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1364 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1366 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1368 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1370 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1372 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1374 CALL icopy( nmat, work( i ), 1, javal, 1 )
1376 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1378 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1380 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1382 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1384 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1386 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1388 CALL icopy( nmat, work( i ), 1, rscxval, 1 )
1390 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1392 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1394 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1396 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1398 CALL icopy( nmat, work( i ), 1, myval, 1 )
1400 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1402 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1404 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1406 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1408 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1410 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1412 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1414 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1416 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1418 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1422 IF( work( i ).EQ.1 )
THEN
1425 ltest( j ) = .false.
1436 120
WRITE( nout, fmt = 9997 )
1438 IF( nout.NE.6 .AND. nout.NE.0 )
1440 CALL blacs_abort( ictxt, 1 )
1445 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1447 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1448 9996
FORMAT( a7, l2 )
1449 9995
FORMAT(
' Subprogram name ', a7, ' not recognized
',
1450 $ /' ******* tests abandoned *******
' )
1451 9994 FORMAT( 2X, 'alpha :
', G16.6 )
1452 9993 FORMAT( 2X, 'beta :
', G16.6 )
1453 9992 FORMAT( 2X, 'number of tests : ', i6 )
1454 9991
FORMAT( 2x,
'Number of process grids : ', i6 )
1455 9990
FORMAT( 2x,
' : ', 5i6 )
1456 9989
FORMAT( 2x, a1,
' : ', 5i6 )
1457 9988
FORMAT( 2x,
'Routines to be tested : ', a, a8 )
1458 9987
FORMAT( 2x,
' ', a, a8 )
1459 9986
FORMAT( 2x,
'Logical block size : ', i6 )