IBM Books

Engineering and Scientific Subroutine Library for AIX Version 3 Release 3: Guide and Reference


Overview of ESSL

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.

Performance and Functional Capability

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.

Usability

ESSL is designed for usability:

The Variety of Mathematical Functions

This section describes the mathematical functions included in ESSL.

Areas of Application

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

What ESSL Provides

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--Processing Capabilities

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 e(logo)server 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.

Accuracy of the Computations

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.

High Performance of ESSL

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:

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 Fortran Language Interface to the Subroutines

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.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]