Library

 

Usage/Description

BLACS

(Basic Linear Algebra Communication Subroutines)

To link in this library, include -lblacs in the link line.

 

BLACS (Basic Linear Algebra Communication Subroutines) - set of kernel communication routines for message passing parallel linear algebra routines with the added purposes to:

  • Aid design and coding
  • Promote efficiency by identifying frequently occurring operations of linear algebra
      • Operations are matrix based - readily transmit sub-matrices of a larger matrix
      • Include point-to-point communication, broadcasts, reduce operations and support routines
      • Context driven - safety mechanism to ensure that messages sent in one context cannot be received in another
  • Ensure portability via standardization of kernels

The BLACS are not a general purpose communications library (usually vector based rather than matrix)

 

ESSL
(Engineering and Scientific Subroutine Library)

 

To link in this library, include -lessl in the link line. This library works with both 32 and 64 bit environments and is thread-safe.

A collection of mathematical subroutines that provides a wide range of high-performance mathematical functions for many different scientific and engineering applications. ESSL includes the following:

  • Basic Linear Algebra Subroutines (BLAS)
  • Linear Algebraic Equations
  • Eigensystem Analysis
  • Fourier Transforms 2 & 3D), convolutions and correlations, and related computations
  • Uniform random number generator

ESSL provides single and double precision versions for most routines.

 

LAPACK

(Linear Algebra Package)

 

To link in the 64-bit version, use -q64 -   L/usr/local/apps/LAPACK -llapack.
To link in the 32-bit version, use -L/usr/local/apps32/LAPACK -llapack.

To call LAPACK functions from C, you do not need to use trailing underscores. In addition, be sure to use the -lxlf90_r flag when linking with C compilers.

·  LAPACK:

  • Successor to LINPACK and EISPACK incorporating the functionality of both
  • Portability addressed by use of BLAS as the building blocks
  • Efficiency gained by using block algorithms that exploit level 3 and level 2 BLAS

·  LAPACK Routines - designed for dense or banded matrices, not for general sparse matrices :

  • Systems of linear equations
  • Linear least squares problems
  • Eigenvalue and singular value problems, including generalized problems
  • Matrix factorizations: LU, Cholesky, QR, QZ, SVD, GSVD, Schur and generalized Schur
  • Condition and error estimates 

 

MASS
(Mathematical

Acceleration Subsystem)

 

To link in MASS scalar functions, include -L/usr/local/apps/mass -lmass in the link line. Note that since MASS replaces some functions in -lm, it must be linked on the compile line prior to -lm. Be sure to compile programs using MASS library with thread-safe (_r) compilers.

A set of functions that replace several of the mathematical functions in libm.a (sqrt, rsqrt, exp, log, sin, cos, tan, atan, atan2, sinh, cosh, tanh, dnint, x**y).

To link in vector intrinsics, include -L/usr/local/apps/mass -lmassvp4 in the link line. When calling the library functions from C, only call by reference is supported, even for scalar arguments.

MASS also has vector intrinsics. When it's necessary to perform an identical math operation on an array of input data, vector functions provide a better performance than scalar ones (see link above for some performance measurements as well as usage caveats).

Note that some MASS functions are less accurate than the default -lm functions. The results may not be bit-wise identical. The accuracy of vector functions is comparable to that of the scalar ones, but the results still may not be bit-wise identical.

 

NAG

(Numerical Algorithms Group)

 

To link in the NAG library, include -q64 -L/usr/local/apps/nag -lnag in your link line. NAG is available only in the 64 bit version, so the -q64 compile flag (or OBJECT_MODE set to 64) is necessary to use it.

To call NAG functions from C, you do not need to use trailing underscores. In addition, be sure to use the -lxlf90_r flag when linking with C compilers

NAG offers a numerical and statistical library in Fortran that includes:

  • Differential Equations
  • Linear Equations
  • Interpolation, Curve and Surface Fitting
  • Linear Algebra
  • Eigensystem Analysis
  • Statistical Analysis
  • Random Number Generator
  • Fourier Transforms, Summation of Series
  • Time series analysis
  • Mesh generation

 

PESSL

(Parallel ESSL)

 

To link in this library, include -lpessl in the link line. Note that PESSL is not thread-safe.

PESSL is a parallel version of the ESSL library. It is used in conjunction with the serial version of ESSL. PESSL components:

  • ESSL for core computational routines
    • BLAS
    • Suite of common numerical routines including a subset of LAPACK
  • BLACS - latest version uses the Parallel Environment (PE) Message Passing Interface (MPI) routines to communicate data between processor nodes and coordinate the execution of parallel tasks. Previous versions used MPL.
  • Subset of level 2 and 3 PBLAS
  • Subset of ScaLAPACK linear algebra, eigensystem and singular value analysis routines.

 

ScaLAPACK

(Scalable LAPACK)

To link in the 64-bit version, use -q64 -L/usr/local/apps/scalapack -lscalapack.
To link in the 32-bit version, use -L/usr/local/apps32/scalapack -lscalapack.

ScaLAPACK (Scalable LAPACK) is a library of high-performance linear algebra routines for distributed-memory message-passing MIMD computers and networks of workstations supporting PVM and/or MPI.

  • Essentially a port of LAPACK - contains the same routines for solving systems of linear equations, least squares problems, and eigenvalue problems.
  • Resulted from the ScaLAPACK Project involving Oak Ridge National Laboratory and several universities.
  • Design goals:
    • Maintain performance (including scalability)
    • Retain portability
    • Stay as close as possible to LAPACK in calling sequence, storage, etc.
    • Promote modularity via set of linear algebra tools (BLAS, BLACS and PBLAS)
    • Use LAPACK algorithms when possible

  • Performance issues
    • Data movement
      • Between vector registers/cache, memory and disk as for LAPACK
      • Between memory of distributed processors
      • Controlled via block algorithms that use Level 2 and 3 BLAS (as in LAPACK)
    • Load balancing to keep processors active achieved via 2-D block-cyclic data distribution
      • Load balance is improved with smaller block sizes
      • Communication costs are lower for larger block sizes since fewer messages of larger size are sent
      • There is a block size that balances the tradeoff between load balancing and message latency

 

 

EXAMPLES

From PESSL examples in /usr/lpp/pessl.rte.common/example/c

on DataStar.

 

From: “Parallel Programming with MPI” – Peter Pacheco.