Skip to content

Reference-ScaLAPACK/scalapack

Repository files navigation

=====================
ScaLAPACK README FILE
=====================

 VERSION 1.0 :  February 28, 1995

 VERSION 1.1 :  March 20, 1995

 VERSION 1.2 :  May 10, 1996

 VERSION 1.3 :  June 5, 1996

 VERSION 1.4 :  November 17, 1996

 VERSION 1.5 :  May 1, 1997

 VERSION 1.6 :  November 15, 1997

 VERSION 1.7 :  August, 2001

 VERSION 1.8 :  April 2007

 VERSION 2.0 :  November, 2011
   VERSION 2.0.1 :  January, 2012
   VERSION 2.0.2 :  May, 2012
 
 VERSION 2.1 :  Nov, 2019

 VERSION 2.2 :  Feb 2022

ScaLAPACK, or Scalable LAPACK, is a library of high performance linear
algebra routines for distributed memory computers supporting MPI.

The complete ScaLAPACK package is freely available on netlib and
can be obtained via the World Wide Web or anonymous ftp.

    http://www.netlib.org/scalapack/

=============== GitHub Repository ================

https://github.com/Reference-ScaLAPACK/scalapack/

==================================================

ScaLAPACK, version 2.0, includes routines for the solution of dense,
band, and tridiagonal linear systems of equations, condition estimation and
iterative refinement, for LU and Cholesky factorization, matrix inversion,
full-rank linear least squares problems, orthogonal and generalized orthogonal
factorizations, orthogonal transformation routines, reductions to upper
Hessenberg, bidiagonal and tridiagonal form, reduction of a symmetric-definite/
Hermitian-definite generalized eigenproblem to standard form, the
symmetric/Hermitian, divide-and-conquer symmetric/Hermitian, generalized
symmetric/Hermitian and the nonsymmetric eigenproblem, and the singular value
decomposition.  With the exception of the singular value decomposition,
most routines are available in four types: single precision real, double
precision real, single precision complex, and double precision complex.

New in version 2.0:

- ScaLAPACK now only supports MPI.

- The BLACS is now part of ScaLAPACK, and is compiled into the ScaLAPACK
  library.  It is no longer necessary to link against BLACS libraries.

- Building ScaLAPACK using cmake is now supported.

- New MRRR Symmetric Eigenvalue Problem routines are included:
  pssyevr, pdsyevr, pcheevr and pzheevr.

- New Nonsymmetric Eigenvalue Problem QR routines for computing
  eigenvalues of a Hessenberg matrix are included for real matrices:  
  pshseqr and pdhseqr.

Unless otherwise noted, the current scalapack.tgz on netlib contains
all available updates.

Errata for ScaLAPACK (source code and documentation) can be found at:

  http://www.netlib.org/scalapack/errata.html

ScaLAPACK example programs can be found at:

  http://www.netlib.org/scalapack/examples/

A basic example is included in the EXAMPLE directory.

The ScaLAPACK User's Guide for ScaLAPACK version 1.5 is available
from SIAM at:

 http://www.ec-securehost.com/SIAM/SE04.html
 
To view an HTML version of the Users' Guide for version 1.5, see:
 
 http://www.netlib.org/scalapack/slug/
 
A number of technical reports were written during the development of
ScaLAPACK and published as LAPACK Working Notes by the University
of Tennessee.  These working notes are available at:

 http://www.netlib.org/lapack/lawns/

All questions/comments should be directed to [email protected].

----------------------------------------------------------------------

The Makefiles in ScaLAPACK and its support libraries assume the basic
directory structure below:

                               SCALAPACK/
 _____________________________/     |   \______________________________________
/   |        |        | <library.a> | SLmake.inc  |           |           |    \
    |        |        |             |             |           |           |
    |        |        |             |             |           |           |
  BLACS/   EXAMPLE/ PBLAS/       REDIST/         SRC/      TESTING/     TOOLS/
                                                           / Input \                
                                                          / Files & \
                                                         /Executables\
                                   

NOTE:  It is assumed that the BLAS and LAPACK libraries (and MPI)
       are available on your machine.  These libraries are NOT included 
       with this distribution, and may be obtained at the sites below.

       http://www.netlib.org/blas/
       http://www.netlib.org/lapack/
       http://www.mcs.anl.gov/mpi/mpich/
       http://www.lam-mpi.org/
       http://www.open-mpi.org/

All ScaLAPACK routines -- driver, computational, and auxiliary -- can be
found in the SRC/ directory.  Testing routines and input files can be found
in the TESTING/ directory.  All machine-specific parameters and the locations
of BLAS and LAPACK libraries are specified in the SCALAPACK/SLmake.inc file.
This include file is then referenced in all subdirectory Makefiles.  Once 
the include file has been modified, the entire installation process (including
the building of testing executables) can be performed by typing ``make''
in the top-level ScaLAPACK directory.

ScaLAPACK uses the default (typically 4-byte) integers. With compilers that
support it, the library can be compiled with long (8-byte) integers instead.
This can be achived by providing the flag "-DInt=long" to the C compiler
(or with another corresponding C type) and, simultaneously, the appropriate
integer promotion flag (e.g. "-fdefault-integer-8" or "-i8") to the Fortran
compiler. It is expected that the BLAS/LAPACK library linked to ScaLAPACK uses
the 8-byte integers as well. Note that in order to run the test suite with long
integers, it is necessary to replace the hardcoded byte sizes in the tests
before the compilation using

    sed -i 's/INTSZ = 4/INTSZ = 8/g'   TESTING/EIG/* TESTING/LIN/*
    sed -i 's/INTGSZ = 4/INTGSZ = 8/g' TESTING/EIG/* TESTING/LIN/*

Even then, the tests "xssep", "xsgsep" and "xssyevr" will fail, because they
are already written with the assumption that an integer fits into memory
occupied by a real number, which is mostly not true for combination of default
Fortran real numbers and long integers.

ScaLAPACK Library Versioning
----------------------

From v2.2.1, the ScaLAPACK library is generated with a versioned name
(i.e. with a shared library ABI soname) according to the following pattern:

- We assume that the ABI updates with each MINOR release.
- An API update (and therefore an ABI update) will be expected with any MAJOR release.
- No ABI update should occur between PATCH releases.

Hence with the full version in triplet form as MAJOR.MINOR.PATCH,
the shared library soname will be libscalapack.so.MAJOR.MINOR.