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.
This part of the book is organized into seven chapters, providing guidance information on how to use ESSL. It is organized as follows:
This chapter introduces you to the Engineering and Scientific Subroutine Library (ESSL) for Advanced Interactive Executive (AIX*).
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 four 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 subroutines can be called from application programs written in Fortran, C, C++, and Programming Language/I (PL/I). ESSL runs under the AIX operating system.
ESSL is designed for usability:
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:
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:
|
0 0 0 0
|
41 11 32 0
|
41 11 32 3
|
Matrix Operations: Addition, subtraction, multiplications, rank-k updates, rank-2k updates, and matrix transposes | 0 | 25 | 26 |
Linear Algebraic Equations:
|
0 0 0 0
|
30 18 0 3
|
32 18 11 3
|
Eigensystem Analysis: Solutions to the algebraic eigensystem analysis problem and the generalized eigensystem analysis problem | 0 | 8 | 8 |
(Signal Processing) Computations:
|
0 0 0
|
15 10 6
|
11 2 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 | 11 | 0 | 3 |
Total ESSL Subroutines | 16 | 217 | 225 |
ESSL provides four run-time libraries, the ESSL SMP Library, the ESSL Thread-Safe Library, the ESSL POWER2 Library, and the ESSL POWER Library. These libraries are designed to provide high levels of performance for numerically intensive computing jobs on the RS/6000 processors. To order the IBM Engineering and Scientific Subroutine Library for AIX, Version 3, specify program number 5765-C42. Most of the subroutine calls are compatible with those in the ESSL/370 product. See the Engineering and Scientific Subroutine Library Version 2.2 Guide and Reference for details.
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 RS/6000 architecture precisions: 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 the the XL Fortran XLSMPOPTS 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 "Coding Your Program".