9192
9193
9194
9195
9196
9197
9198
9199 INTEGER ICTXT, IPOST, IPRE, LDA, M, N
9200 DOUBLE PRECISION CHKVAL
9201
9202
9203 CHARACTER*(*) MESS
9204 DOUBLE PRECISION A( * )
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279 CHARACTER*1 TOP
9280 INTEGER I, IAM, IDUMM, INFO, J, K, MYCOL, MYROW, NPCOL,
9281 $ NPROW
9282
9283
9284 EXTERNAL blacs_gridinfo, igamx2d, pb_topget
9285
9286
9287
9288
9289
9290 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
9291 iam = myrow*npcol + mycol
9292 info = -1
9293
9294
9295
9296 IF( ipre.GT.0 ) THEN
9297 DO 10 i = 1, ipre
9298 IF( a( i ).NE.chkval ) THEN
9299 WRITE( *, fmt = 9998 ) myrow, mycol, mess, ' pre', i,
9300 $ a( i )
9301 info = iam
9302 END IF
9303 10 CONTINUE
9304 ELSE
9305 WRITE( *, fmt = * ) 'WARNING no pre-guardzone in PB_DCHEKPAD'
9306 END IF
9307
9308
9309
9310 IF( ipost.GT.0 ) THEN
9311 j = ipre+lda*n+1
9312 DO 20 i = j, j+ipost-1
9313 IF( a( i ).NE.chkval ) THEN
9314 WRITE( *, fmt = 9998 ) myrow, mycol, mess, 'post',
9315 $ i-j+1, a( i )
9316 info = iam
9317 END IF
9318 20 CONTINUE
9319 ELSE
9320 WRITE( *, fmt = * )
9321 $ 'WARNING no post-guardzone buffer in PB_DCHEKPAD'
9322 END IF
9323
9324
9325
9326 IF( lda.GT.m ) THEN
9327 k = ipre + m + 1
9328 DO 40 j = 1, n
9329 DO 30 i = k, k + (lda-m) - 1
9330 IF( a( i ).NE.chkval ) THEN
9331 WRITE( *, fmt = 9997 ) myrow, mycol, mess,
9332 $ i-ipre-lda*(j-1), j, a( i )
9333 info = iam
9334 END IF
9335 30 CONTINUE
9336 k = k + lda
9337 40 CONTINUE
9338 END IF
9339
9340 CALL pb_topget( ictxt, 'Combine', 'All', top )
9341 CALL igamx2d( ictxt, 'All', top, 1, 1, info, 1, idumm, idumm, -1,
9342 $ 0, 0 )
9343 IF( iam.EQ.0 .AND. info.GE.0 ) THEN
9344 WRITE( *, fmt = 9999 ) info / npcol, mod( info, npcol ), mess
9345 END IF
9346
9347 9999 FORMAT( '{', i5, ',', i5, '}: Memory overwrite in ', a )
9348 9998 FORMAT( '{', i5, ',', i5, '}: ', a, ' memory overwrite in ',
9349 $ a4, '-guardzone: loc(', i3, ') = ', g20.7 )
9350 9997 FORMAT( '{', i5, ',', i5, '}: ', a, ' memory overwrite in ',
9351 $ 'lda-m gap: loc(', i3, ',', i3, ') = ', g20.7 )
9352
9353 RETURN
9354
9355
9356