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

◆ dbtcheckin()

subroutine dbtcheckin ( integer  nftests,
integer  outnum,
integer  maxerr,
integer  nerr,
integer, dimension(*)  ierr,
double precision, dimension(*)  dval,
integer, dimension(*)  tfailed 
)

Definition at line 8403 of file blacstest.f.

8405 INTEGER NFTESTS, OUTNUM, MAXERR, NERR
8406 INTEGER IERR(*), TFAILED(*)
8407 DOUBLE PRECISION DVAL(*)
8408*
8409* Purpose
8410* =======
8411* DBTCHECKIN: Process 0 receives error report from all processes.
8412*
8413* Arguments
8414* =========
8415* NFTESTS (input/output) INTEGER
8416* if NFTESTS is <= 0 upon entry, NFTESTS is not written to.
8417* Otherwise, on entry it specifies the total number of tests
8418* run, and on exit it is the number of tests which failed.
8419*
8420* OUTNUM (input) INTEGER
8421* Device number for output.
8422*
8423* MAXERR (input) INTEGER
8424* Max number of errors that can be stored in ERRIBUFF or
8425* ERRDBUFF
8426*
8427* NERR (output) INTEGER
8428* The number of errors that have been found.
8429*
8430* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
8431* Buffer in which to store integer error information. It will
8432* be built up in the following format for the call to TSEND.
8433* All integer information is recorded in the following 6-tuple
8434* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
8435* SRC = RSRC * NPROCS + CSRC
8436* DEST = RDEST * NPROCS + CDEST
8437* WHAT
8438* = 1 : Error in pre-padding
8439* = 2 : Error in post-padding
8440* = 3 : Error in LDA-M gap
8441* = 4 : Error in complementory triangle
8442* ELSE: Error in matrix
8443* If there are more errors than can fit in the error buffer,
8444* the error number will indicate the actual number of errors
8445* found, but the buffer will be truncated to the maximum
8446* number of errors which can fit.
8447*
8448* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
8449* Buffer in which to store error data information.
8450* {Incorrect, Predicted}
8451*
8452* TFAILED (workspace) INTEGER array, dimension NFTESTS
8453* Workspace used to keep track of which tests failed.
8454* If input of NFTESTS < 1, this array not accessed.
8455*
8456* ===================================================================
8457*
8458* .. External Functions ..
8459 INTEGER IBTMYPROC, IBTNPROCS, IBTMSGID
8460 EXTERNAL ibtmyproc, ibtnprocs, ibtmsgid
8461* ..
8462* .. Local Scalars ..
8463 LOGICAL COUNTING
8464 INTEGER K, NERR2, IAM, NPROCS, NTESTS
8465*
8466* Proc 0 collects error info from everyone
8467*
8468 iam = ibtmyproc()
8469 nprocs = ibtnprocs()
8470*
8471 IF( iam .EQ. 0 ) THEN
8472*
8473* If we are finding out how many failed tests there are, initialize
8474* the total number of tests (NTESTS), and zero the test failed array
8475*
8476 counting = nftests .GT. 0
8477 IF( counting ) THEN
8478 ntests = nftests
8479 DO 10 k = 1, ntests
8480 tfailed(k) = 0
8481 10 CONTINUE
8482 END IF
8483*
8484 CALL dprinterrs(outnum, maxerr, nerr, ierr, dval, counting,
8485 $ tfailed)
8486*
8487 DO 20 k = 1, nprocs-1
8488 CALL btsend(3, 0, k, k, ibtmsgid()+50)
8489 CALL btrecv(3, 1, nerr2, k, ibtmsgid()+50)
8490 IF( nerr2 .GT. 0 ) THEN
8491 nerr = nerr + nerr2
8492 CALL btrecv(3, nerr2*6, ierr, k, ibtmsgid()+51)
8493 CALL btrecv(6, nerr2*2, dval, k, ibtmsgid()+51)
8494 CALL dprinterrs(outnum, maxerr, nerr2, ierr, dval,
8495 $ counting, tfailed)
8496 END IF
8497 20 CONTINUE
8498*
8499* Count up number of tests that failed
8500*
8501 IF( counting ) THEN
8502 nftests = 0
8503 DO 30 k = 1, ntests
8504 nftests = nftests + tfailed(k)
8505 30 CONTINUE
8506 END IF
8507*
8508* Send my error info to proc 0
8509*
8510 ELSE
8511 CALL btrecv(3, 0, k, 0, ibtmsgid()+50)
8512 CALL btsend(3, 1, nerr, 0, ibtmsgid()+50)
8513 IF( nerr .GT. 0 ) THEN
8514 CALL btsend(3, nerr*6, ierr, 0, ibtmsgid()+51)
8515 CALL btsend(6, nerr*2, dval, 0, ibtmsgid()+51)
8516 END IF
8517 ENDIF
8518*
8519 RETURN
8520*
8521* End of DBTCHECKIN
8522*
subroutine dprinterrs(outnum, maxerr, nerr, erribuf, errdbuf, counting, tfailed)
Definition blacstest.f:9276
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: