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

◆ zbtcheckin()

subroutine zbtcheckin ( integer  nftests,
integer  outnum,
integer  maxerr,
integer  nerr,
integer, dimension(*)  ierr,
double complex, dimension(*)  zval,
integer, dimension(*)  tfailed 
)

Definition at line 10535 of file blacstest.f.

10537 INTEGER NFTESTS, OUTNUM, MAXERR, NERR
10538 INTEGER IERR(*), TFAILED(*)
10539 DOUBLE COMPLEX ZVAL(*)
10540*
10541* Purpose
10542* =======
10543* ZBTCHECKIN: Process 0 receives error report from all processes.
10544*
10545* Arguments
10546* =========
10547* NFTESTS (input/output) INTEGER
10548* if NFTESTS is <= 0 upon entry, NFTESTS is not written to.
10549* Otherwise, on entry it specifies the total number of tests
10550* run, and on exit it is the number of tests which failed.
10551*
10552* OUTNUM (input) INTEGER
10553* Device number for output.
10554*
10555* MAXERR (input) INTEGER
10556* Max number of errors that can be stored in ERRIBUFF or
10557* ERRZBUFF
10558*
10559* NERR (output) INTEGER
10560* The number of errors that have been found.
10561*
10562* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
10563* Buffer in which to store integer error information. It will
10564* be built up in the following format for the call to TSEND.
10565* All integer information is recorded in the following 6-tuple
10566* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
10567* SRC = RSRC * NPROCS + CSRC
10568* DEST = RDEST * NPROCS + CDEST
10569* WHAT
10570* = 1 : Error in pre-padding
10571* = 2 : Error in post-padding
10572* = 3 : Error in LDA-M gap
10573* = 4 : Error in complementory triangle
10574* ELSE: Error in matrix
10575* If there are more errors than can fit in the error buffer,
10576* the error number will indicate the actual number of errors
10577* found, but the buffer will be truncated to the maximum
10578* number of errors which can fit.
10579*
10580* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
10581* Buffer in which to store error data information.
10582* {Incorrect, Predicted}
10583*
10584* TFAILED (workspace) INTEGER array, dimension NFTESTS
10585* Workspace used to keep track of which tests failed.
10586* If input of NFTESTS < 1, this array not accessed.
10587*
10588* ===================================================================
10589*
10590* .. External Functions ..
10591 INTEGER IBTMYPROC, IBTNPROCS, IBTMSGID
10592 EXTERNAL ibtmyproc, ibtnprocs, ibtmsgid
10593* ..
10594* .. Local Scalars ..
10595 LOGICAL COUNTING
10596 INTEGER K, NERR2, IAM, NPROCS, NTESTS
10597*
10598* Proc 0 collects error info from everyone
10599*
10600 iam = ibtmyproc()
10601 nprocs = ibtnprocs()
10602*
10603 IF( iam .EQ. 0 ) THEN
10604*
10605* If we are finding out how many failed tests there are, initialize
10606* the total number of tests (NTESTS), and zero the test failed array
10607*
10608 counting = nftests .GT. 0
10609 IF( counting ) THEN
10610 ntests = nftests
10611 DO 10 k = 1, ntests
10612 tfailed(k) = 0
10613 10 CONTINUE
10614 END IF
10615*
10616 CALL zprinterrs(outnum, maxerr, nerr, ierr, zval, counting,
10617 $ tfailed)
10618*
10619 DO 20 k = 1, nprocs-1
10620 CALL btsend(3, 0, k, k, ibtmsgid()+50)
10621 CALL btrecv(3, 1, nerr2, k, ibtmsgid()+50)
10622 IF( nerr2 .GT. 0 ) THEN
10623 nerr = nerr + nerr2
10624 CALL btrecv(3, nerr2*6, ierr, k, ibtmsgid()+51)
10625 CALL btrecv(7, nerr2*2, zval, k, ibtmsgid()+51)
10626 CALL zprinterrs(outnum, maxerr, nerr2, ierr, zval,
10627 $ counting, tfailed)
10628 END IF
10629 20 CONTINUE
10630*
10631* Count up number of tests that failed
10632*
10633 IF( counting ) THEN
10634 nftests = 0
10635 DO 30 k = 1, ntests
10636 nftests = nftests + tfailed(k)
10637 30 CONTINUE
10638 END IF
10639*
10640* Send my error info to proc 0
10641*
10642 ELSE
10643 CALL btrecv(3, 0, k, 0, ibtmsgid()+50)
10644 CALL btsend(3, 1, nerr, 0, ibtmsgid()+50)
10645 IF( nerr .GT. 0 ) THEN
10646 CALL btsend(3, nerr*6, ierr, 0, ibtmsgid()+51)
10647 CALL btsend(7, nerr*2, zval, 0, ibtmsgid()+51)
10648 END IF
10649 ENDIF
10650*
10651 RETURN
10652*
10653* End of ZBTCHECKIN
10654*
subroutine zprinterrs(outnum, maxerr, nerr, erribuf, errdbuf, counting, tfailed)
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: