4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PDSWAP ',
'PDSCAL ',
'PDCOPY ',
7 $
'PDAXPY ',
'PDDOT ',
'PDNRM2 ',
8 $
'PDASUM ',
'PDAMAX '/
99 INTEGER maxtests, maxgrids, dblesz, totmem, memsiz,
101 parameter( maxtests = 20, maxgrids = 20, dblesz = 8,
102 $ totmem = 2000000, nsubs = 8,
103 $ memsiz = totmem / dblesz )
104 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
105 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
107 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
108 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
109 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
110 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
113 INTEGER csrcx, csrcy, i, iam, ictxt, imbx, imby, imidx,
114 $ imidy, inbx, inby, incx, incy, ipostx, iposty,
115 $ iprex, iprey, ipx, ipy, ix, ixseed, iy, iyseed,
116 $ j, jx, jy, k, mbx, mby, memreqd, mpx, mpy, mx,
117 $ my, mycol, myrow, n, nbx, , ngrids, nout,
118 $ npcol, nprocs, nprow, nqx, nqy, ntests, nx, ny,
119 $ pisclr, rsrcx, rsrcy
120 DOUBLE PRECISION adds,
alpha, cflops, mults, nops, psclr,
125 LOGICAL ltest( nsubs ), ( nsubs )
126 INTEGER cscxval( maxtests ), cscyval( maxtests ),
127 $ ( dlen_ ), descy( dlen_ ), ierr( 2 ),
128 $ imbxval( maxtests ), imbyval( maxtests ),
129 $ inbxval( maxtests ), inbyval( maxtests ),
130 $ incxval( maxtests ), incyval( maxtests ),
131 $ ixval( maxtests ), iyval( maxtests ),
132 $ jxval( maxtests ), jyval( maxtests ),
133 $ mbxval( maxtests ), ( maxtests ),
134 $ mxval( maxtests ), myval( maxtests ),
135 $ nbxval( maxtests ), nbyval( maxtests ),
136 $ nval( maxtests ), nxval( maxtests ),
137 $ nyval( maxtests ), pval( maxtests ),
138 $ qval( maxtests ), rscxval( maxtests ),
140 DOUBLE PRECISION ctime( 1 ), mem( memsiz ), wtime( 1 )
143 EXTERNAL blacs_barrier, blacs_exit, blacs_get,
154 CHARACTER*7 snames( nsubs )
157 COMMON /snamec/snames
158 COMMON /infoc/info, nblog
159 COMMON /pberrorc/nout, abrtflg
162 DATA ycheck/.true., .false., .true., .true., .true.,
163 $ .false., .false., .false./
181 CALL blacs_pinfo( iam, nprocs )
182 CALL pdbla1timinfo( outfile, nout, ntests, nval, mxval, nxval,
183 $ imbxval, mbxval, inbxval, nbxval, rscxval,
184 $ cscxval, ixval, jxval, incxval, myval,
185 $ nyval, imbyval, mbyval, inbyval, nbyval
186 $ rscyval, cscyval, iyval, jyval, incyval,
187 $ maxtests, ngrids, pval, maxgrids, qval,
188 $ maxgrids, ltest, iam, nprocs,
alpha, mem )
191 $
WRITE( nout, fmt = 9986 )
203 IF( nprow.LT.1 )
THEN
205 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
207 ELSE IF( npcol.LT.1 )
THEN
209 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
211 ELSE IF( nprow*npcol.GT.nprocs )
THEN
213 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
217 IF( ierr( 1 ).GT.0 )
THEN
219 $
WRITE( nout, fmt = 9997 )
'GRID'
225 CALL blacs_get( -1, 0, ictxt )
232 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
266 WRITE( nout, fmt = * )
267 WRITE( nout, fmt = 9996 ) j, nprow, npcol
268 WRITE( nout, fmt = * )
270 WRITE( nout, fmt = 9995 )
271 WRITE( nout, fmt = 9994 )
272 WRITE( nout, fmt = 9995 )
273 WRITE( nout, fmt = 9993 ) n, ix, jx, mx, nx, imbx, inbx,
274 $ mbx, nbx, rsrcx, csrcx, incx
276 WRITE( nout, fmt = 9995 )
277 WRITE( nout, fmt = 9992 )
278 WRITE( nout, fmt = 9995 )
279 WRITE( nout, fmt = 9993 ) n, iy, jy, my, ny, imby, inby,
280 $ mby, nby, rsrcy, csrcy, incy
281 WRITE( nout, fmt = 9995 )
282 WRITE( nout, fmt = 9983 )
288 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
289 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
290 $ iprex, imidx, ipostx, 0, 0, ierr( 1 ) )
292 $ block_cyclic_2d_inb, my, ny, imby, inby,
293 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
294 $ iprey, imidy, iposty, 0, 0, ierr( 2 ) )
296 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 )
303 ipy = ipx + descx( lld_ ) * nqx
307 memreqd = ipy + descy( lld_ ) * nqy - 1
309 IF( memreqd.GT.memsiz )
THEN
311 $
WRITE( nout, fmt = 9990 ) memreqd*dblesz
317 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
319 IF( ierr( 1 ).GT.0 )
THEN
321 $
WRITE( nout, fmt = 9991 )
331 IF( .NOT.ltest( k ) )
336 CALL pvdimchk( ictxt, nout, n,
'X', ix, jx, descx, incx,
338 CALL pvdimchk( ictxt, nout, n,
'Y', iy, jy, descy, incy,
341 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 )
346 CALL pdlagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
347 $ 1, descx, ixseed, mem( ipx ),
350 $
CALL pdlagen( .false.,
'None',
'No diag', 0, my, ny,
351 $ 1, 1, descy, iyseed, mem( ipy ),
356 CALL blacs_barrier( ictxt,
'All' )
367 CALL pdswap( n, mem( ipx ), ix, jx, descx, incx,
368 $ mem( ipy ), iy, jy, descy, incy )
371 ELSE IF( k.EQ.2 )
THEN
382 ELSE IF( k.EQ.3 )
THEN
389 CALL pdcopy( n, mem( ipx ), ix, jx, descx, incx,
390 $ mem( ipy ), iy, jy, descy, incy )
393 ELSE IF( k.EQ.4 )
THEN
401 $ incx, mem( ipy ), iy, jy, descy, incy )
404 ELSE IF( k.EQ.5 )
THEN
411 CALL pddot( n, psclr, mem( ipx ), ix, jx, descx, incx,
412 $ mem( ipy ), iy, jy, descy, incy )
415 ELSE IF( k.EQ.6 )
THEN
422 CALL pdnrm2( n, pusclr, mem( ipx ), ix, jx, descx,
426 ELSE IF( k.EQ.7 )
THEN
433 CALL pdasum( n, pusclr, mem( ipx ), ix, jx, descx,
437 ELSE IF( k.EQ.8 )
THEN
442 CALL pdamax( n, psclr, pisclr, mem( ipx ), ix, jx,
452 $
WRITE( nout, fmt = 9985 ) info
456 CALL pb_combine( ictxt,
'All',
'>',
'W', 1, 1, wtime )
457 CALL pb_combine( ictxt,
'All',
'>',
'C', 1, 1, ctime )
469 IF( wtime( 1 ).GT.0.0d+0 )
THEN
470 wflops = nops / ( wtime( 1 ) * 1.0d+6 )
477 IF( ctime( 1 ).GT.0.0d+0 )
THEN
478 cflops = nops / ( ctime( 1 ) * 1.0d+6 )
483 WRITE( nout, fmt = 9984 ) snames( k ), wtime( 1 ),
484 $ wflops, ctime( 1 ), cflops
490 40
IF( iam.EQ.0 )
THEN
491 WRITE( nout, fmt = 9995 )
492 WRITE( nout, fmt = * )
493 WRITE( nout, fmt = 9988 ) j
499 WRITE( nout, fmt = * )
500 WRITE( nout, fmt = 9987 )
501 WRITE( nout, fmt = * )
510 9999
FORMAT(
'ILLEGAL ', a,
': ', a,
' = ', i10,
511 $
' should be at least 1' )
512 9998
FORMAT(
'ILLEGAL GRID: NPROW*NPCOL = ', i4,
513 $
'. It can be at most', i4 )
514 9997
FORMAT(
'Bad ', a,
' parameters: going on to next test case.' )
515 9996
FORMAT( 2x,
'Test number ', i2 ,
' started on a ', i4,
' x ',
516 $ i4,
' process grid.' )
517 9995
FORMAT( 2x,
'---------------------------------------------------',
518 $
'--------------------------' )
519 9994
FORMAT( 2x,
' N IX JX MX NX IMBX INBX',
520 $
' MBX NBX RSRCX CSRCX INCX' )
521 9993
FORMAT( 2x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i5,1x,i5,1x,i5,1x,i5,1x,
523 9992
FORMAT( 2x,
' N IY JY MY NY IMBY INBY',
524 $
' MBY NBY RSRCY CSRCY INCY' )
525 9991
FORMAT(
'Not enough memory for this test: going on to',
526 $
' next test case.' )
527 9990
FORMAT(
'Not enough memory. Need: ', i12 )
528 9988
FORMAT( 2x,
'Test number ', i2,
' completed.' )
529 9987
FORMAT( 2x,
'End of Tests.' )
530 9986
FORMAT( 2x,
'Tests started.' )
531 9985
FORMAT( 2x,
' ***** Operation not supported, error code: ',
533 9984
FORMAT( 2x,
'| ', a, 2x, f13.3, 2x, f13.3, 2x, f13.3, 2x, f13.3 )
534 9983
FORMAT( 2x,
' WALL time (s) WALL Mflops ',
535 $
' CPU time (s) CPU Mflops' )
543 $ IMBXVAL, MBXVAL, INBXVAL, NBXVAL,
544 $ RSCXVAL, CSCXVAL, IXVAL, JXVAL,
545 $ INCXVAL, MYVAL, NYVAL, IMBYVAL, MBYVAL,
546 $ INBYVAL, NBYVAL, RSCYVAL, CSCYVAL,
547 $ IYVAL, JYVAL, INCYVAL, LDVAL, NGRIDS,
548 $ PVAL, LDPVAL, QVAL, LDQVAL, LTEST, IAM,
549 $ NPROCS, ALPHA, WORK )
557 INTEGER IAM, LDPVAL, LDQVAL, LDVAL, NGRIDS, NMAT, NOUT,
559 DOUBLE PRECISION ALPHA
562 CHARACTER*( * ) SUMMRY
564 INTEGER CSCXVAL( LDVAL ), CSCYVAL( LDVAL ),
565 $ IMBXVAL( LDVAL ), IMBYVAL( LDVAL ),
566 $ inbxval( ldval ), inbyval( ldval
567 $ incxval( ldval ), incyval( ldval ),
568 $ ixval( ldval ), iyval( ldval ), jxval( ldval ),
569 $ jyval( ldval ), mbxval( ldval ),
570 $ mbyval( ldval ), mxval( ldval ),
571 $ myval( ldval ), nbxval( ldval ),
572 $ nbyval( ldval ), nval( ldval ), nxval( ldval ),
573 $ nyval( ldval ), pval( ldpval ), qval( ldqval ),
574 $ rscxval( ldval ), rscyval( ldval ), work( * )
768 PARAMETER ( = 11, nsubs = 8 )
787 CHARACTER*7 SNAMES( )
788 COMMON /SNAMEC/SNAMES
800 OPEN( nin, file=
'PDBLAS1TIM.dat', status=
'OLD' )
801 READ( nin, fmt = * ) summry
806 READ( nin, fmt = 9999 ) usrinfo
810 READ( nin, fmt = * ) summry
811 READ( nin, fmt = * ) nout
812 IF( nout.NE.0 .AND. nout.NE.6 )
813 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
819 READ( nin, fmt = * ) ngrids
820 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
821 WRITE( nout, fmt = 9998 )
'Grids'
823 ELSE IF( ngrids.GT.ldqval )
THEN
824 WRITE( nout, fmt = 9998 )
'Grids', ldqval
830 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
831 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
835 READ( nin, fmt = * ) alpha
839 READ( nin, fmt = * ) nmat
840 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
841 WRITE( nout, fmt = 9998 )
'Tests', ldval
847 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
848 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
849 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
851 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
852 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
853 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
854 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
855 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
857 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
858 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
859 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
860 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
861 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
862 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
863 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
864 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
865 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
866 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat
867 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
868 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat
869 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
878 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
880 IF( snamet.EQ.snames( i ) )
884 WRITE( nout, fmt = 9995 )snamet
900 IF( nprocs.LT.1 )
THEN
903 nprocs =
max( nprocs, pval( i )*qval( i ) )
905 CALL blacs_setup( iam, nprocs )
911 CALL blacs_get( -1, 0, ictxt )
920 CALL igebs2d( ictxt,
'All',
' ', 2, 1, work, 2 )
923 CALL icopy( ngrids, pval, 1, work( i ), 1 )
925 CALL icopy( ngrids, qval, 1, work( i ), 1 )
927 CALL icopy( nmat, nval, 1, work( i ), 1 )
929 CALL icopy( nmat, mxval, 1, work( i ), 1 )
931 CALL icopy( nmat, nxval, 1, work( i ),
933 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
935 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
937 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
939 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
941 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
943 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
945 CALL icopy( nmat, ixval, 1, work( i ), 1 )
947 CALL icopy( nmat, jxval, 1, work( i ), 1 )
949 CALL icopy( nmat, incxval, 1, work( i ), 1 )
951 CALL icopy( nmat, myval, 1, work( i ), 1 )
953 CALL icopy( nmat, nyval, 1, work( i ), 1 )
955 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
957 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
959 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
961 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
963 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
965 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
967 CALL icopy( nmat, iyval, 1, work( i ), 1 )
969 CALL icopy( nmat, jyval, 1, work( i ), 1 )
971 CALL icopy( nmat, incyval, 1, work( i ), 1 )
975 IF( ltest( j ) )
THEN
983 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
987 WRITE( nout, fmt = 9999 )
988 $
'Level 1 PBLAS timing program.'
989 WRITE( nout, fmt = 9999 ) usrinfo
990 WRITE( nout, fmt = * )
991 WRITE( nout, fmt = 9999 )
992 $
'Timing of the real double precision '//
994 WRITE( nout, fmt = * )
995 WRITE( nout, fmt = 9999 )
996 $
'The following parameter values will be used:'
997 WRITE( nout, fmt = * )
998 WRITE( nout, fmt = 9993 ) nmat
999 WRITE( nout, fmt = 9992 ) ngrids
1000 WRITE( nout, fmt = 9990 )
1001 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1003 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 6,
1004 $
min( 10, ngrids ) )
1006 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 11,
1007 $
min( 15, ngrids ) )
1009 $
WRITE( nout, fmt = 9991 ) ( pval(i
1010 WRITE( nout, fmt = 9990 )
1011 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1013 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 6,
1014 $
min( 10, ngrids ) )
1016 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 11,
1017 $
min( 15, ngrids ) )
1019 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 16, ngrids )
1020 WRITE( nout, fmt = 9994 )
alpha
1021 IF( ltest( 1 ) )
THEN
1022 WRITE( nout, fmt = 9989 ) snames( 1 ),
' ... Yes'
1024 WRITE( nout, fmt = 9989 ) snames( 1 ),
' ... No '
1027 IF( ltest( i ) )
THEN
1028 WRITE( nout, fmt = 9988 ) snames( i ),
' ... Yes'
1030 WRITE( nout, fmt = 9988 ) snames( i ),
' ... No '
1033 WRITE( nout, fmt = * )
1040 $
CALL blacs_setup( iam, nprocs )
1045 CALL blacs_get( -1, 0, ictxt )
1048 CALL dgebr2d( ictxt,
'All',
' ', 1, 1,
alpha, 1, 0, 0 )
1050 CALL igebr2d( ictxt,
'All',
' ', 2, 1, work, 2, 0, 0 )
1054 i = 2*ngrids + 23*nmat + nsubs
1055 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1058 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1060 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1062 CALL icopy( nmat, work( i ), 1, nval, 1 )
1064 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1066 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1068 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1070 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1072 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1074 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1076 CALL icopy( nmat, work( i ), 1, rscxval, 1 )
1078 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1080 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1082 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1084 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1086 CALL icopy( nmat, work( i ), 1, myval, 1 )
1088 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1090 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1092 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1094 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1096 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1098 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1100 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1102 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1104 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1106 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1110 IF( work( i ).EQ.1 )
THEN
1113 ltest( j ) = .false.
1124 100
WRITE( nout, fmt = 9997 )
1126 IF( nout.NE.6 .AND. nout.NE.0 )
1128 CALL blacs_abort( ictxt, 1 )
1133 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1135 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1136 9996
FORMAT( a7, l2 )
1137 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1138 $ /
' ******* TESTS ABANDONED *******' )
1139 9994
FORMAT( 2x,
'Alpha : ', g16.6 )
1140 9993
FORMAT( 2x,
'Number of Tests : ', i6 )
1141 9992
FORMAT( 2x,
'Number of process grids : ', i6 )
1142 9991
FORMAT( 2x, ' :
', 5I6 )
1143 9990 FORMAT( 2X, A1, ' :
', 5I6 )
1144 9989 FORMAT( 2X, 'routines to be tested
', A, A8 )
1145 9988 FORMAT( 2X, ' ', A, A8 )
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
subroutine sgebs2d(contxt, scope, top, m, n, a, lda)
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine dgebs2d(contxt, scope, top, m, n, a, lda)
subroutine pdnrm2(n, norm2, x, ix, jx, descx, incx)
subroutine pdaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
subroutine pdscal(n, alpha, x, ix, jx, descx, incx)
subroutine dgebr2d(contxt, scope, top, m, n, a, lda)
subroutine sgebr2d(contxt, scope, top, m, n, a, lda)
subroutine pddot(n, dot, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
subroutine blacs_gridexit(cntxt)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
subroutine pb_combine(ictxt, scope, op, tmtype, n, ibeg, times)
subroutine pvdimchk(ictxt, nout, n, matrix, ix, jx, descx, incx, info)
subroutine pvdescchk(ictxt, nout, matrix, descx, dtx, mx, nx, imbx, inbx, mbx, nbx, rsrcx, csrcx, incx, mpx, nqx, iprex, imidx, ipostx, igap, gapmul, info)
subroutine pdbla1timinfo(summry, nout, nmat, nval, mxval, nxval, imbxval, mbxval, inbxval, nbxval, rscxval, cscxval, ixval, jxval, incxval, myval, nyval, imbyval, mbyval, inbyval, nbyval, rscyval, cscyval, iyval, jyval, incyval, ldval, ngrids, pval, ldpval, qval, ldqval, ltest, iam, nprocs, alpha, work)
subroutine pdlagen(inplace, aform, diag, offa, m, n, ia, ja, desca, iaseed, a, lda)