9194
9195
9196
9197
9198
9199
9200
9201 INTEGER ICTXT, IPOST, IPRE, LDA, M, N
9202 REAL CHKVAL
9203
9204
9205 CHARACTER*(*) MESS
9206 REAL A( * )
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
9280
9281 CHARACTER*1 TOP
9282 INTEGER I, IAM, IDUMM, INFO, J, K, MYCOL, MYROW, NPCOL,
9283 $ NPROW
9284
9285
9286 EXTERNAL blacs_gridinfo, igamx2d, pb_topget
9287
9288
9289
9290
9291
9292 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
9293 iam = myrow*npcol + mycol
9294 info = -1
9295
9296
9297
9298 IF( ipre.GT.0 ) THEN
9299 DO 10 i = 1, ipre
9300 IF( a( i ).NE.chkval ) THEN
9301 WRITE( *, fmt = 9998 ) myrow, mycol, mess, ' pre', i,
9302 $ a( i )
9303 info = iam
9304 END IF
9305 10 CONTINUE
9306 ELSE
9307 WRITE( *, fmt = * ) 'WARNING no pre-guardzone in PB_SCHEKPAD'
9308 END IF
9309
9310
9311
9312 IF( ipost.GT.0 ) THEN
9313 j = ipre+lda*n+1
9314 DO 20 i = j, j+ipost-1
9315 IF( a( i ).NE.chkval ) THEN
9316 WRITE( *, fmt = 9998 ) myrow, mycol, mess, 'post',
9317 $ i-j+1, a( i )
9318 info = iam
9319 END IF
9320 20 CONTINUE
9321 ELSE
9322 WRITE( *, fmt = * )
9323 $ 'WARNING no post-guardzone buffer in PB_SCHEKPAD'
9324 END IF
9325
9326
9327
9328 IF( lda.GT.m ) THEN
9329 k = ipre + m + 1
9330 DO 40 j = 1, n
9331 DO 30 i = k, k + (lda-m) - 1
9332 IF( a( i ).NE.chkval ) THEN
9333 WRITE( *, fmt = 9997 ) myrow, mycol, mess,
9334 $ i-ipre-lda*(j-1), j, a( i )
9335 info = iam
9336 END IF
9337 30 CONTINUE
9338 k = k + lda
9339 40 CONTINUE
9340 END IF
9341
9342 CALL pb_topget( ictxt, 'Combine', 'All', top )
9343 CALL igamx2d( ictxt, 'All', top, 1, 1, info, 1, idumm, idumm, -1,
9344 $ 0, 0 )
9345 IF( iam.EQ.0 .AND. info.GE.0 ) THEN
9346 WRITE( *, fmt = 9999 ) info / npcol, mod( info, npcol ), mess
9347 END IF
9348
9349 9999 FORMAT( '{', i5, ',', i5, '}: Memory overwrite in ', a )
9350 9998 FORMAT( '{', i5, ',', i5, '}: ', a, ' memory overwrite in ',
9351 $ a4, '-guardzone: loc(', i3, ') = ', g11.4 )
9352 9997 FORMAT( '{', i5, ',', i5, '}: ', a, ' memory overwrite in ',
9353 $ 'lda-m gap: loc(', i3, ',', i3, ') = ', g11.4 )
9354
9355 RETURN
9356
9357
9358