1 SUBROUTINE pilaprnt( M, N, A, IA, JA, DESCA, IRPRNT, ICPRNT,
10 INTEGER , ICPRNT, IRPRNT, JA, M, N, NOUT
15 INTEGER A( * ), WORK( * )
124 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
125 $ lld_, mb_, m_, nb_, n_, rsrc_
126 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
127 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
128 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
131 INTEGER , I, IACOL, IAROW, IB, ICTXT, ICURCOL,
132 $ icurrow, ii, iia, in, j, jb, jj, jja, jn, k,
133 $ lda, mycol, myrow, npcol, nprow
150 ictxt = desca( ctxt_ )
153 CALL infog2l( ia, ja, desca, nprow, npcol, myrow, mycol,
154 $ iia, jja, iarow, iacol )
163 jn =
min( iceil( ja, desca( nb_ ) ) * desca( nb_ ), ja+n-1 )
166 in =
min( iceil( ia, desca( mb_ ) ) * desca( mb_ ), ia+m-1 )
168 IF( icurrow.EQ.irprnt .AND. icurcol.EQ.icprnt )
THEN
169 IF( myrow.EQ.irprnt .AND. mycol.EQ.icprnt )
THEN
171 WRITE( nout, fmt = 9999 )
172 $ cmatnm, ia+k, ja+h, a( ii+k+(jj+h-1)*lda )
176 IF( myrow.EQ.icurrow .AND. mycol.EQ.icurcol )
THEN
177 CALL igesd2d( ictxt, ib, 1, a( ii+(jj+h-1)*lda ), lda,
179 ELSE IF( myrow.EQ.irprnt .AND. mycol.EQ.icprnt )
THEN
180 CALL igerv2d( ictxt, ib, 1, work, desca( mb_ ),
183 WRITE( nout, fmt = 9999 )
184 $ cmatnm, ia+k-1, ja+h, work( k )
188 IF( myrow.EQ.icurrow )
190 icurrow = mod( icurrow+1, nprow )
191 CALL blacs_barrier( ictxt,
'All' )
195 DO 50 i = in+1, ia+m-1, desca( mb_ )
196 ib =
min( desca( mb_ ), ia+m-i )
197 IF( icurrow.EQ.irprnt .AND. icurcol.EQ.icprnt )
THEN
198 IF( myrow.EQ.irprnt .AND. mycol.EQ.icprnt )
THEN
200 WRITE( nout, fmt = 9999 )
201 $ cmatnm, i+k, ja+h, a( ii+k+(jj+h-1)*lda )
205 IF( myrow.EQ.icurrow .AND. mycol.EQ.icurcol )
THEN
206 CALL igesd2d( ictxt, ib, 1, a( ii+(jj+h-1)*lda ),
207 $ lda, irprnt, icprnt )
208 ELSE IF( myrow.EQ.irprnt .AND. mycol.EQ.icprnt )
THEN
209 CALL igerv2d( ictxt, ib, 1, work, desca( mb_ ),
212 WRITE( nout, fmt = 9999 )
213 $ cmatnm, i+k-1, ja+h, work( k )
217 IF( myrow.EQ.icurrow )
219 icurrow = mod( icurrow+1, nprow )
220 CALL blacs_barrier( ictxt, 'all
' )
227.EQ.
IF( MYCOLICURCOL )
229 ICURCOL = MOD( ICURCOL+1, NPCOL )
230 CALL BLACS_BARRIER( ICTXT, 'all
' )
234 DO 130 J = JN+1, JA+N-1, DESCA( NB_ )
235 JB = MIN( DESCA( NB_ ), JA+N-J )
237 IN = MIN( ICEIL( IA, DESCA( MB_ ) ) * DESCA( MB_ ), IA+M-1 )
239.EQ..AND..EQ.
IF( ICURROWIRPRNT ICURCOLICPRNT ) THEN
240.EQ..AND..EQ.
IF( MYROWIRPRNT MYCOLICPRNT ) THEN
242 WRITE( NOUT, FMT = 9999 )
243 $ CMATNM, IA+K, J+H, A( II+K+(JJ+H-1)*LDA )
247.EQ..AND..EQ.
IF( MYROWICURROW MYCOLICURCOL ) THEN
248 CALL IGESD2D( ICTXT, IB, 1, A( II+(JJ+H-1)*LDA ),
249 $ LDA, IRPRNT, ICPRNT )
250.EQ..AND..EQ.
ELSE IF( MYROWIRPRNT MYCOLICPRNT ) THEN
251 CALL IGERV2D( ICTXT, IB, 1, WORK, DESCA( MB_ ),
254 WRITE( NOUT, FMT = 9999 )
255 $ CMATNM, IA+K-1, J+H, WORK( K )
259.EQ.
IF( MYROWICURROW )
261 ICURROW = MOD( ICURROW+1, NPROW )
262 CALL BLACS_BARRIER( ICTXT, 'all
' )
266 DO 110 I = IN+1, IA+M-1, DESCA( MB_ )
267 IB = MIN( DESCA( MB_ ), IA+M-I )
268.EQ..AND..EQ.
IF( ICURROWIRPRNT ICURCOLICPRNT ) THEN
269.EQ..AND..EQ.
IF( MYROWIRPRNT MYCOLICPRNT ) THEN
271 WRITE( NOUT, FMT = 9999 )
272 $ CMATNM, I+K, J+H, A( II+K+(JJ+H-1)*LDA )
276.EQ..AND..EQ.
IF( MYROWICURROW MYCOLICURCOL ) THEN
277 CALL IGESD2D( ICTXT, IB, 1, A( II+(JJ+H-1)*LDA ),
278 $ LDA, IRPRNT, ICPRNT )
279.EQ..AND..EQ.
ELSE IF( MYROWIRPRNT MYCOLICPRNT ) THEN
280 CALL IGERV2D( ICTXT, IB, 1, WORK, DESCA( MB_ ),
283 WRITE( NOUT, FMT = 9999 )
284 $ CMATNM, I+K-1, J+H, WORK( K )
288.EQ.
IF( MYROWICURROW )
290 ICURROW = MOD( ICURROW+1, NPROW )
291 CALL BLACS_BARRIER( ICTXT, 'all
' )
298.EQ.
IF( MYCOLICURCOL )
300 ICURCOL = MOD( ICURCOL+1, NPCOL )
301 CALL BLACS_BARRIER( ICTXT, 'all
' )
305 9999 FORMAT(A,'(
',I6,',
',I6,')=
',I8)