SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ ibtcheckin()

subroutine ibtcheckin ( integer  nftests,
integer  outnum,
integer  maxerr,
integer  nerr,
integer, dimension(*)  ierr,
integer, dimension(*)  ival,
integer, dimension(*)  tfailed 
)

Definition at line 6270 of file blacstest.f.

6272 INTEGER NFTESTS, OUTNUM, MAXERR, NERR
6273 INTEGER IERR(*), TFAILED(*)
6274 INTEGER IVAL(*)
6275*
6276* Purpose
6277* =======
6278* IBTCHECKIN: Process 0 receives error report from all processes.
6279*
6280* Arguments
6281* =========
6282* NFTESTS (input/output) INTEGER
6283* if NFTESTS is <= 0 upon entry, NFTESTS is not written to.
6284* Otherwise, on entry it specifies the total number of tests
6285* run, and on exit it is the number of tests which failed.
6286*
6287* OUTNUM (input) INTEGER
6288* Device number for output.
6289*
6290* MAXERR (input) INTEGER
6291* Max number of errors that can be stored in ERRIBUFF or
6292* ERRIBUFF
6293*
6294* NERR (output) INTEGER
6295* The number of errors that have been found.
6296*
6297* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
6298* Buffer in which to store integer error information. It will
6299* be built up in the following format for the call to TSEND.
6300* All integer information is recorded in the following 6-tuple
6301* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
6302* SRC = RSRC * NPROCS + CSRC
6303* DEST = RDEST * NPROCS + CDEST
6304* WHAT
6305* = 1 : Error in pre-padding
6306* = 2 : Error in post-padding
6307* = 3 : Error in LDA-M gap
6308* = 4 : Error in complementory triangle
6309* ELSE: Error in matrix
6310* If there are more errors than can fit in the error buffer,
6311* the error number will indicate the actual number of errors
6312* found, but the buffer will be truncated to the maximum
6313* number of errors which can fit.
6314*
6315* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
6316* Buffer in which to store error data information.
6317* {Incorrect, Predicted}
6318*
6319* TFAILED (workspace) INTEGER array, dimension NFTESTS
6320* Workspace used to keep track of which tests failed.
6321* If input of NFTESTS < 1, this array not accessed.
6322*
6323* ===================================================================
6324*
6325* .. External Functions ..
6326 INTEGER IBTMYPROC, IBTNPROCS, IBTMSGID
6327 EXTERNAL ibtmyproc, ibtnprocs, ibtmsgid
6328* ..
6329* .. Local Scalars ..
6330 LOGICAL COUNTING
6331 INTEGER K, NERR2, IAM, NPROCS, NTESTS
6332*
6333* Proc 0 collects error info from everyone
6334*
6335 iam = ibtmyproc()
6336 nprocs = ibtnprocs()
6337*
6338 IF( iam .EQ. 0 ) THEN
6339*
6340* If we are finding out how many failed tests there are, initialize
6341* the total number of tests (NTESTS), and zero the test failed array
6342*
6343 counting = nftests .GT. 0
6344 IF( counting ) THEN
6345 ntests = nftests
6346 DO 10 k = 1, ntests
6347 tfailed(k) = 0
6348 10 CONTINUE
6349 END IF
6350*
6351 CALL iprinterrs(outnum, maxerr, nerr, ierr, ival, counting,
6352 $ tfailed)
6353*
6354 DO 20 k = 1, nprocs-1
6355 CALL btsend(3, 0, k, k, ibtmsgid()+50)
6356 CALL btrecv(3, 1, nerr2, k, ibtmsgid()+50)
6357 IF( nerr2 .GT. 0 ) THEN
6358 nerr = nerr + nerr2
6359 CALL btrecv(3, nerr2*6, ierr, k, ibtmsgid()+51)
6360 CALL btrecv(3, nerr2*2, ival, k, ibtmsgid()+51)
6361 CALL iprinterrs(outnum, maxerr, nerr2, ierr, ival,
6362 $ counting, tfailed)
6363 END IF
6364 20 CONTINUE
6365*
6366* Count up number of tests that failed
6367*
6368 IF( counting ) THEN
6369 nftests = 0
6370 DO 30 k = 1, ntests
6371 nftests = nftests + tfailed(k)
6372 30 CONTINUE
6373 END IF
6374*
6375* Send my error info to proc 0
6376*
6377 ELSE
6378 CALL btrecv(3, 0, k, 0, ibtmsgid()+50)
6379 CALL btsend(3, 1, nerr, 0, ibtmsgid()+50)
6380 IF( nerr .GT. 0 ) THEN
6381 CALL btsend(3, nerr*6, ierr, 0, ibtmsgid()+51)
6382 CALL btsend(3, nerr*2, ival, 0, ibtmsgid()+51)
6383 END IF
6384 ENDIF
6385*
6386 RETURN
6387*
6388* End of IBTCHECKIN
6389*
subroutine iprinterrs(outnum, maxerr, nerr, erribuf, errdbuf, counting, tfailed)
Definition blacstest.f:7148
integer function ibtmsgid()
Definition blacstest.f:1361
subroutine btrecv(dtype, n, buff, src, msgid)
Definition btprim.f:207
integer function ibtnprocs()
Definition btprim.f:81
integer function ibtmyproc()
Definition btprim.f:47
subroutine btsend(dtype, n, buff, dest, msgid)
Definition btprim.f:115
Here is the call graph for this function:
Here is the caller graph for this function: