This section gives an overview of the ESSL capabilities and requirements.
ESSL is a state-of-the-art collection of subroutines providing a wide range of mathematical functions for many different scientific and engineering applications. Its primary characteristics are performance, functional capability, and usability.
The mathematical subroutines, in nine computational areas, are tuned for performance on the RS/6000. The computational areas are:
ESSL provides two run-time libraries:
All libraries are designed to provide high levels of performance for numerically intensive computing jobs on these respective processors. All versions provide mathematically equivalent results.
The ESSL Serial Library and the ESSL SMP Library support both 32-bit environment and 64-bit environment applications.
The ESSL subroutines can be called from application programs written in Fortran, C, |and C++. ESSL runs under the AIX operating system.
ESSL is designed for usability:
64-bit applications can be created on any system, but can only run on 64-bit hardware.
The data model used for |the 64-bit environment is referred to as LP64. This data model supports 32-bit integers and 64-bit pointers. In accordance with the LP64 data model, all ESSL integer arguments remain |32-bit except for the iusadr argument for ERRSET. See ERRSET--ESSL ERRSET Subroutine for ESSL.
This section describes the mathematical functions included in ESSL.
ESSL provides a variety of mathematical functions for many different types
of scientific and engineering applications. Some of the industries
using these applications are: Aerospace, Automotive, Electronics,
Petroleum, Finance, Utilities, and Research. Examples of applications
in these industries are:
| Structural Analysis | Time Series Analysis |
| Computational Chemistry | Computational Techniques |
| Fluid Dynamics Analysis | Mathematical Analysis |
| Seismic Analysis | Dynamic Systems Simulation |
| Reservoir Modeling | Nuclear Engineering |
| Quantitative Analysis | Electronic Circuit Design |
The subroutines provided in ESSL, summarized in Table 1, fall into the following groups:
To help you select the ESSL subroutines that fulfill your needs for
performance, accuracy, storage, and so forth, see Selecting an ESSL Subroutine.
Table 1. Summary of ESSL Subroutines
ESSL Area of Computation | Integer Subroutines | Short-Precision Subroutines | Long-Precision Subroutines |
---|---|---|---|
Linear Algebra Subprograms: |
|
|
|
Vector-scalar | 0 | 41 | 41 |
Sparse vector-scalar | 0 | 11 | 11 |
Matrix-vector | 1 | 32 | 32 |
Sparse matrix-vector | 0 | 0 | 3 |
Matrix Operations: |
|
|
|
Addition, subtraction, multiplications, rank-k updates, rank-2k updates, and matrix transposes | 0 | 25 | 26 |
Linear Algebraic Equations: |
|
|
|
Dense linear algebraic equations | 3 | 38 | 43 |
Banded linear algebraic equations | 0 | 18 | 18 |
Sparse linear algebraic equations | 0 | 0 | 11 |
Linear least squares | 0 | 3 | 5 |
Eigensystem Analysis: |
|
|
|
Solutions to the algebraic eigensystem analysis problem and the generalized eigensystem analysis problem | 0 | 8 | 8 |
Signal Processing Computations: |
|
|
|
Fourier transforms | 0 | 15 | 11 |
Convolutions and correlations | 0 | 10 | 2 |
Related computations | 0 | 6 | 6 |
Sorting and Searching: |
|
|
|
Sorting, sorting with index, and binary and sequential searching | 5 | 5 | 5 |
Interpolation: |
|
|
|
Polynomial and cubic spline interpolation | 0 | 4 | 4 |
Numerical Quadrature: |
|
|
|
Numerical quadrature on a set of points or on a function | 0 | 6 | 6 |
Random Number Generation: |
|
|
|
Generating vectors of uniformly distributed and normally distributed random numbers | 0 | 3 | 3 |
Utilities: |
|
|
|
General service operations | 8 | 0 | 3 |
Total ESSL Subroutines | 13 | 225 | 238 |
ESSL provides two run-time libraries, the ESSL SMP Library and
the ESSL Serial Library. These libraries are designed to
provide high levels of performance for numerically intensive computing jobs on
the |IBM pSeries and RS/6000 processors. To order the IBM Engineering and Scientific
Subroutine Library for AIX, specify program number 5765-C42. Most of
the subroutine calls are compatible with those in the ESSL/370 product.
ESSL provides accuracy comparable to libraries using equivalent algorithms with identical precision formats. Both short- and long-precision real versions of the subroutines are provided in most areas of ESSL. In some areas, short- and long-precision complex versions are also provided, and, occasionally, an integer version is provided. The data types operated on by the short-precision, long-precision, and integer versions of the subroutines are |ANSI/IEEE 32-bit and 64-bit binary floating-point format, and 32-bit integer. See the ANSI/IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985, for more detail. (There are ESSL-specific rules that apply to the results of computations on workstation processors using the ANSI/IEEE standards. For details, see What Data Type Standards Are Used by ESSL, and What Exceptions Should You Know About?.)
For more information on accuracy, see Getting the Best Accuracy.
Algorithms: The ESSL subroutines have been designed to provide high performance. (See references [30], [41], and [42].) To achieve this performance, the subroutines use state-of-the-art algorithms tailored to specific operational characteristics of the hardware, such as cache size, Translation Lookaside Buffer (TLB) size, and page size.
Most subroutines use the following techniques to optimize performance:
|You should use either the XL Fortran XLSMPOPTS or the |OMP_NUM_THREADS environment variable to specify the number of threads you want |to create.
Mathematical Techniques: All areas of ESSL use state-of-the-art mathematical techniques to achieve high performance. For example, the matrix-vector linear algebra subprograms operate on a higher-level data structure, matrix-vector rather than vector-scalar. As a result, they optimize performance directly for your program and indirectly through those ESSL subroutines using them.
The ESSL subroutines follow standard Fortran calling conventions and must run in the Fortran run-time environment. When ESSL subroutines are called from a program in a language other than Fortran, such as C, C++, or PL/I, the Fortran conventions must be used. This applies to all aspects of the interface, such as the linkage conventions and the data conventions. For example, array ordering must be consistent with Fortran array ordering techniques. Data and linkage conventions for each language are given in Chapter 4, Coding Your Program.