Errata for ScaLAPACK, version 1.7


 History of ScaLAPACK releases

 VERSION 1.0  :  February 28, 1995

 PATCHES:
  VERSION 1.1 :  March 20, 1995

 VERSION 1.2  :  May 10, 1996

 PATCHES:
  VERSION 1.3 :  June 5, 1996

 VERSION 1.4  :  November 17, 1996

 VERSION 1.5  :  May 1, 1997

 PATCHES:
  VERSION 1.6 :  November 15, 1997

 VERSION 1.7 :   August 31, 2001

To better address the needs of our ScaLAPACK users, we have created this Errata webpage. Users will be able to download updates/patches to ScaLAPACK in a variety of ways (Unix patch, tar-gzip file), and will no longer need to wait for an update/release, or make the changes by-hand. Errata in the documentation are also noted, as well as a list of known deficiencies in the ScaLAPACK software.

This file contains:

ScaLAPACK has been tested on a variety of architectures.

Testing was performed using MPICH 1.2.0, and MPIBLACS version 1.1.

Note to PGF77 and NAGF90 compiler users: We have unconfirmed reports of Fortran/C interoperability problems (string handling) with ScaLAPACK on the nagf90 and pg77 compilers. Until this is resolved, the user will have to avoid using these two compilers in conjunction with ScaLAPACK and the BLACS.


Errata in ScaLAPACK Users' Guide

 page
 ----

   8:  Change to netlib format ( .tar.gz --> .tgz )
       Section 1.7 change scalapack.tar.gz -> scalapack.tgz

   9:  Change to netlib format ( .tar.gz --> .tgz )
       Section 1.8 change manpages.tar.gz -> manpages.tgz

  13-14:  Change to netlib format ( .tar.gz --> .tgz )
       Section 2.1, numerous references to .tar.gz files
       must be replaced by .tgz

  14:  Change to netlib format ( .shar -> .tgz )
       http://www.netlib.org/blas/blas.shar
          should be changed to
       http://www.netilb.org/blas/blas.tgz
 
       and

       sh blas.shar
          should be changed to
       gunzip -c blas.tgz | tar xvf -

  20:  Typographical error in the 8th row of the coefficient
       matrix A.  The 8th row is listed as
        -s  -c  -a  -l  -a  -p  -a   c   k
        and should be replaced by:
        -s  +c  -a  -l  -a  -p  -a   c   k

        Likewise, this correction must be propogated to the
        8th row of Figure 2.1.
        -s  +c  -a  -l  -a  -p  -a   c   k

  72:  Section 4.4.2

       In the text beginning "Table 4.10 illustrates ...",
       it erroneously says NB=3.  This should be NB=8, as noted
       in the caption of Table 4.10.

  90:  Section 4.6.7, third paragraph
       inherit --> inherent

 116:  Erroneous use of BLAS instead of BLACS in the first sentence
       of Section 5.4.1.  The first sentence should say:

       "Users should choose vendor-supplied BLACS optimized for their
       computer; these BLACS will be the fastest BLACS implementation."


Errata in ScaLAPACK, version 1.7

UPDATED: March 25, 2002

The following bug fixes have NOT yet been incorporated in a release/update of ScaLAPACK.

DIRECTORY/ROUTINE DATE POSTED (M/D/Y) DESCRIPTION OF CHANGE
SCALAPACK/PBLAS/SRC/PBtools.h 3/12/2002 Comment out CSYMM reference (line 57)
SCALAPACK/PBLAS/SRC/pblas.h 3/15/2002 Added missing crot define
SCALAPACK/SRC/psdbtrf.f 3/12/2002 Typo (DLACPY->SLACPY) in EXTERNAL declaration (line 374)
SCALAPACK/SRC/pcheevd.f 3/25/2002 Correction to LRWORK (lines 117, 248) and INFO=0 return
SCALAPACK/SRC/pzheevd.f
SCALAPACK/TESTING/EIG/pcseptst.f 3/15/2002 Correction to LHEEVDSIZE calculation (line 1064)
SCALAPACK/TESTING/EIG/pzseptst.f

The following outstanding bugs exist in the ScaLAPACK code and hope to be fixed in an upcoming patch or release.

  • When testing on ALPHA OSF1 V5.1, the xcevc test hangs.
  • When testing on SGI IRIX6.5 with "-DEBUG:subscript_check=ON -trapuv" compiler flags, the following abnormalities were detected. Bug fixes outstanding.
    1. xstrd (pslatrd?) (sigfpe when more than 1 processor)
      Floating Exception
      p1_1604757:  p4_error: interrupt SIGFPE: 8
      rm_l_1_1615487:  p4_error: interrupt SIGINT: 2
      Abort
      
    2. xsdblu (psbmatgen.f)
      Subscript out of range on file line 188, procedure psbmatgen.
      Attempt to access the 0-th element of variable ?.
      
    3. xsgblu (psbmatgen.f)
      Subscript out of range on file line 188, procedure psbmatgen.
      Attempt to access the 0-th element of variable ?.
      
    4. xspbllt (psbmatgen.f)
      Subscript out of range on file line 188, procedure psbmatgen.
      Attempt to access the 0-th element of variable ?.
      
    5. xsnep (SIGFPE in pslahqr.f, line 1086)
      WALL    10   6    1    1     0.00     4.61 PASSED
      Process 1296014 (xsnep) stopped on signal SIGFPE: Floating point exception (handler sig_err_handler) at [PSLAHQR:1086 +0x294,0x1005b29c]
      1086  SUM = SMALLA( J, 3, KI ) +
      (dbx) print SUM 
      0.015993516892194748 
      (dbx) print J     
      6 
      (dbx) print KI  
      1 
      (dbx) print SMALLA(J,3,KI)
      nan0x0000000007fffffff 
      
    6. xssep ?
       inside pssepsubtst index MYIL-1 =           0
      Subscript out of range on file line 707, procedure pssepsubtst.
      Attempt to access the 0-th element of variable ?.
      
                     IF( .NOT.LSAME( RANGE, 'V' ) .OR.
           $             ( MYIL.EQ.1 .OR. ( WIN( MYIL-1 ).LT.VL+NORMWIN*FIVE*
           $             THRESH*EPS ) ) ) THEN
                        IF( .NOT.LSAME( RANGE, 'V' ) .OR.
           $                ( MYIL.EQ.N-M+1 .OR. ( WIN( MYIL+M ).GT.VU-
           $                NORMWIN*FIVE*THRESH*EPS ) ) ) THEN
      
    7. xsgsep
      Subscript out of range on file line 491, procedure psstein.
      Attempt to access the 0-th element of variable ?.
      *** Execution Terminated (99) ***
      
      Line 491 is:
                  ONENRM = MAX( ONENRM, ABS( D( BN ) )+ABS( E( BN-1 ) ) )
      
    8. xssvd (psgesvd has illegal slaset call M>LDA)
      Occurs inside psgesvd before first call to PSLASET, M > LDA !
      
      Subscript out of range on file line 106, procedure slaset.
      Attempt to access the 0-th element of variable ?.
      *** Execution Terminated (99) ***
      
    9. xcnep (SIGFPE in pclahqr.f, line 900)
      WALL    10   6    1    1     0.01     1.54 PASSED
      Process 1626569 (xcnep) stopped on signal SIGFPE: Floating point exception (handler sig_err_handler) at [PCLAHQR:900 +0x300,0x1007d544]
       900  SUM = T1*SMALLA( J, 3, KI ) +
      
      (dbx) print SMALLA(J,3,KI)
      (nan0x0000000007fffffff, nan0x0000000007fffffff) 
      (dbx) print SMALLA(J,4,KI)
      (nan0x0000000007fffffff, nan0x0000000007fffffff) 
      (dbx) print SMALLA(J,5,KI)
      (nan0x0000000007fffffff, nan0x0000000007fffffff) 
      
    10. xcevc ?
      /usr/local/mpich/bin/mpirun[139]: 1365679 Memory fault
      

    The following "suspicious" test failures have been witnessed with xcevc/xzevc.

    The following "suspected" bugs may exist in the ScaLAPACK code, but have not been verified.


    Known Deficiencies in ScaLAPACK, version 1.7

    The following deficiencies exist in the ScaLAPACK code and hope to be incorporated in an upcoming patch or release.


    Machine-Specific Installation Hints

    1. For HPPA, you may need to compile all routines in SCALAPACK/PBLAS/SRC/PBBLAS/ with NO optimization. And, the user must modify SCALAPACK/SRC/pslabad.f and pdlabad.f to remove the IF-conditional and always take the square root.
    2. For NEC SX-4, the user must modify SCALAPACK/SRC/pslabad.f and pdlabad.f to remove the IF-conditional and always take the square root. And, you must include the -DNOIEEE flag in the CDEFS definition in the SLmake.inc.
    3. For Cray T3E, the user must modify SCALAPACK/SRC/pslabad.f and pdlabad.f to remove the IF-conditional and always take the square root. And, you must include the -DNOIEEE flag in the CDEFS definition in the SLmake.inc.

      Also for the Cray T3E ONLY, the user must reset the defined size of an integer and a real in the ScaLAPACK Test Suite. Set the variable INTGSZ = 8, REALSZ = 8, and CPLXSZ = 16 in all SCALAPACK/TESTING/LIN/p*driver.f, SCALAPACK/TESTING/EIG/p*driver.f, SCALAPACK/TESTING/EIG/p*sepreq.f, SCALAPACK/TESTING/EIG/p*gsepreq.f, SCALAPACK/PBLAS/TESTING/p*tst.f, and SCALAPACK/PBLAS/TIMING/p*tim.f testing/timing programs! By default, INTGSZ = 4, REALSZ = 4, and CPLXSZ = 8 for all other architectures.

      Specifically, the following changes are required:

      
      SCALAPACK/PBLAS/SRC/pblas.h
          Change "void fortran" to "void" and "int fortran" to "int". ??
      
      SCALAPACK/SLmake.inc:
         add -DNO_IEEE to CDEFS
         add -dp to compilation flags
      
      SCALAPACK/SRC/p?stein.f:
         as first executable line, add:
            onenrm = 0.0E0
      
      SCALAPACK/SRC/p?latrz.f:
         add
            AII = ZERO
         right after quick return so it is initialized on nodes that do not do
         stuff in P_LARFG
      
      SCALAPACK/SRC/p?labad.f:
         comment out
            IF( LOG10( LARGE ).GT.2000.D0 ) THEN
         because T3E has IEEE hardware, but not arithmetic
      
      SCALAPACK/SRC/pslaiect.c
         as first line, add:
      #define float double
      
      SCALAPACK/PBLAS/SRC/pblas.h
         in original file, move lines 92 and 93 to line 119 (:92,93mo119)
         this moves the typedef for complex below the #define float double . .
      
         at line 27, add:
      #ifdef T3E
      #define _MACH_          _T3D_
      #endif
      
      SCALAPACK/PBLAS/TESTING/p*tst.f:
                     Set REALSZ = 8 and CPLXSZ = 16!!
      
      SCALAPACK/PBLAS/TIMING/p*tim.f:
                     Set REALSZ = 8 and CPLXSZ = 16!!
      
      SCALAPACK/TESTING/LIN/p*driver.f:
                     Set INTGSZ = 8, REALSZ = 8, and CPLXSZ = 16!!
      
      SCALAPACK/TESTING/EIG/p*driver.f:
                     Set INTGSZ = 8, REALSZ = 8, and CPLXSZ = 16!!
      
      SCALAPACK/TESTING/EIG/p*sepreq.f:
                     Set INTGSZ = 8, REALSZ = 8, and CPLXSZ = 16!!
      
      SCALAPACK/TESTING/EIG/p*gsepreq.f:
                     Set INTGSZ = 8, REALSZ = 8, and CPLXSZ = 16!!
      
      SCALAPACK/TESTING/EIG/p[c,z]sepsubtst.f:
         change line 737 from:
                     IF( MISSSMALLEST .AND. ( WIN( MYIL-1 ).LT.VL+NORMWIN*
           $             FIVE*THRESH*EPS ) )MISSSMALLEST = .FALSE.
         to:
                     if (misssmallest)
           $            misssmallest = win(myil-1) .ge.
           $                           vl+normwin*five*thresh*eps
      
      SCALAPACK/TESTING/EIG/p[d,s]sepsubtst.f:
         change line 714 from:
                     IF( MISSSMALLEST .AND. ( WIN( MYIL-1 ).LT.VL+NORMWIN*
           $             FIVE*THRESH*EPS ) )MISSSMALLEST = .FALSE.
      to:
                     if (misssmallest)
           $            misssmallest = win(myil-1) .ge.
           $                           vl+normwin*five*thresh*eps
      
      SCALAPACK/TESTING/EIG/p*gsepsubtst.f:
                     Same change as for p*sepsubtst.f.
      


    Issues of Heterogeneous Networks of Computers

    Unresolved issues remain in heterogeneous computing. As a result, the ScaLAPACK library is not as robust in a heterogeneous environment as it is in a homogeneous environment. The following is a list of known problems when ScaLAPACK is run on a heterogeneous network of computers. For further details, please refer to LAPACK Working Note 112.

    1. Because the ALPHA handles denormalized numbers differently than other architectures, the least squares executables SCALAPACK/TESTING/x_ls will fail when run on a heterogeneous network. However, the least squares executables will run homogeneously on ALPHAs.
    2. The symmetric eigensolvers may have trouble on heterogeneous networks when a subset of eigenvalues is chosen by value (i.e. RANGE='V') and one of the limits of that range (VL or VU) is within a couple ulps of an actual eigenvalue. This is not a problem on homogeneous systems. When this happens, some processes will return INFO <> 0. This can happen when running the test code. In every case that we have seen, the answer is correct despite the spurious error message.
    3. The symmetric eigensolver test will often hang on a heterogeneous system which includes an ALPHA. The symmetric eigensolver test will occasionally hang on a network of heterogeneous computers which does not include an ALPHA, such as a network which includes an HPPA and an RS6K.