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

◆ sbtcheckin()

subroutine sbtcheckin ( integer  nftests,
integer  outnum,
integer  maxerr,
integer  nerr,
integer, dimension(*)  ierr,
real, dimension(*)  sval,
integer, dimension(*)  tfailed 
)

Definition at line 7339 of file blacstest.f.

7341 INTEGER NFTESTS, OUTNUM, MAXERR, NERR
7342 INTEGER IERR(*), TFAILED(*)
7343 REAL SVAL(*)
7344*
7345* Purpose
7346* =======
7347* SBTCHECKIN: Process 0 receives error report from all processes.
7348*
7349* Arguments
7350* =========
7351* NFTESTS (input/output) INTEGER
7352* if NFTESTS is <= 0 upon entry, NFTESTS is not written to.
7353* Otherwise, on entry it specifies the total number of tests
7354* run, and on exit it is the number of tests which failed.
7355*
7356* OUTNUM (input) INTEGER
7357* Device number for output.
7358*
7359* MAXERR (input) INTEGER
7360* Max number of errors that can be stored in ERRIBUFF or
7361* ERRSBUFF
7362*
7363* NERR (output) INTEGER
7364* The number of errors that have been found.
7365*
7366* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
7367* Buffer in which to store integer error information. It will
7368* be built up in the following format for the call to TSEND.
7369* All integer information is recorded in the following 6-tuple
7370* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
7371* SRC = RSRC * NPROCS + CSRC
7372* DEST = RDEST * NPROCS + CDEST
7373* WHAT
7374* = 1 : Error in pre-padding
7375* = 2 : Error in post-padding
7376* = 3 : Error in LDA-M gap
7377* = 4 : Error in complementory triangle
7378* ELSE: Error in matrix
7379* If there are more errors than can fit in the error buffer,
7380* the error number will indicate the actual number of errors
7381* found, but the buffer will be truncated to the maximum
7382* number of errors which can fit.
7383*
7384* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
7385* Buffer in which to store error data information.
7386* {Incorrect, Predicted}
7387*
7388* TFAILED (workspace) INTEGER array, dimension NFTESTS
7389* Workspace used to keep track of which tests failed.
7390* If input of NFTESTS < 1, this array not accessed.
7391*
7392* ===================================================================
7393*
7394* .. External Functions ..
7395 INTEGER IBTMYPROC, IBTNPROCS, IBTMSGID
7396 EXTERNAL ibtmyproc, ibtnprocs, ibtmsgid
7397* ..
7398* .. Local Scalars ..
7399 LOGICAL COUNTING
7400 INTEGER K, NERR2, IAM, NPROCS, NTESTS
7401*
7402* Proc 0 collects error info from everyone
7403*
7404 iam = ibtmyproc()
7405 nprocs = ibtnprocs()
7406*
7407 IF( iam .EQ. 0 ) THEN
7408*
7409* If we are finding out how many failed tests there are, initialize
7410* the total number of tests (NTESTS), and zero the test failed array
7411*
7412 counting = nftests .GT. 0
7413 IF( counting ) THEN
7414 ntests = nftests
7415 DO 10 k = 1, ntests
7416 tfailed(k) = 0
7417 10 CONTINUE
7418 END IF
7419*
7420 CALL sprinterrs(outnum, maxerr, nerr, ierr, sval, counting,
7421 $ tfailed)
7422*
7423 DO 20 k = 1, nprocs-1
7424 CALL btsend(3, 0, k, k, ibtmsgid()+50)
7425 CALL btrecv(3, 1, nerr2, k, ibtmsgid()+50)
7426 IF( nerr2 .GT. 0 ) THEN
7427 nerr = nerr + nerr2
7428 CALL btrecv(3, nerr2*6, ierr, k, ibtmsgid()+51)
7429 CALL btrecv(4, nerr2*2, sval, k, ibtmsgid()+51)
7430 CALL sprinterrs(outnum, maxerr, nerr2, ierr, sval,
7431 $ counting, tfailed)
7432 END IF
7433 20 CONTINUE
7434*
7435* Count up number of tests that failed
7436*
7437 IF( counting ) THEN
7438 nftests = 0
7439 DO 30 k = 1, ntests
7440 nftests = nftests + tfailed(k)
7441 30 CONTINUE
7442 END IF
7443*
7444* Send my error info to proc 0
7445*
7446 ELSE
7447 CALL btrecv(3, 0, k, 0, ibtmsgid()+50)
7448 CALL btsend(3, 1, nerr, 0, ibtmsgid()+50)
7449 IF( nerr .GT. 0 ) THEN
7450 CALL btsend(3, nerr*6, ierr, 0, ibtmsgid()+51)
7451 CALL btsend(4, nerr*2, sval, 0, ibtmsgid()+51)
7452 END IF
7453 ENDIF
7454*
7455 RETURN
7456*
7457* End of SBTCHECKIN
7458*
subroutine sprinterrs(outnum, maxerr, nerr, erribuf, errdbuf, counting, tfailed)
Definition blacstest.f:8212
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: