Numerical & Mathematical Software Libraries
The Engineering and Scientific Subroutine Library ESSL provides a collection of mathematical subroutines optimized for the Power architecture. ESSL contains the de-facto standard libraries for dense matrix linear algebra operations, i.e.,
- BLAS (Levels 1, 2, 3)
- LAPACK (subset only, see note below)
- Fast Fourier Transforms (FFT)
- Convolutions and Correlations
- Sorting and Searching
- Numerical Quadrature
- Random Number Generation
The use of subroutines from the ESSL library leads in almost all cases to significant improvements in the performance of the program. The BLAS and LAPACK libraries enable a user-program to reach performance levels that approach the theoretical peak performance of the Power processor. The use of these libraries is therefore strongly recommended. The ESSL library is callable from Fortran, C and C++ programs.
Note 1: for codes that depend on LAPACK subroutines that are not included in the ESSL library, the user should link with -L/usr/local/lib32 -llapack
Note 2: the FFT subroutines that are provided by ESSL give a high degree of performance but they do not have standard calling sequences. This may limit the portability of your code. In case cross-platform portability of your program is important, consider using the freely available FFTW package. The example shows how to link to ESSL when compiling a Fortran program x.f:
OpenMP xlf_r -O -qnosave x.f -lesslsmp Serial xlf_r -O -qnosave x.f -lessl
Parallel ESSL provides parallel versions of the subroutines in ESSL. PESSL is a scalable mathematical subroutine library that supports parallel processing applications. PESSL supports the Single Program Multiple Data (SPMD) programming model using either the Message Passing Interface (MPI) signal handling library or the MPI threaded library. Parallel ESSL provides subroutines in Level 2 Parallel BLAS (PBLAS), Level 3 PBLAS, Linear Algebraic Equations, Eigensystem Analysis and Singular Value Analysis, Fourier Transforms, and Random Number Generation. PESSL includes (subsets of) the BLAS and ScaLAPACK. The PESSL library is callable from Fortran, C, and C++ programs. Example use PESSL in a Fortran program x.f is shown below:
mpxlf_r -O x.f -lesslsmp -lpesslsmp -lblacssmp mpxlf -O x.f -lessl -lpessl -lblacs
The Mathematical Acceleration SubSystem (MASS) library provides high performance versions of a subset of mathematical intrinsic functions. To do this, it sacrifices a small amount of accuracy. Compared to the standard mathematical library, libm.a, the MASS library can differ in the last bit. The libmass.a library can be used with either Fortran or C applications and runs under AIX. As all functions in the MASS library use the same syntax as the standard functions it replaces, you do not have to make any changes in the source code to use it. MASS also offers a vector version for some of the functions. The vector functions are more efficient than the scaler ones, but require that the source code is rewritten. There are two versions of the vector MASS library. The first library, libmassv.a, contains vector function subroutines that run on the entire IBM RS/6000 family. The second library, libmassvp5.a, contains the subroutines of libmassv.a and adds a set that is tuned for and based upon the Power5 architecture. To use the standard MASS library, link your program with -lmass. For example,
xlf90 -O3 -qarch=auto -qtune=auto x.f -lmass cc -O3 -qarch=auto -qtune=auto x.c -lmass -lm
This assumes that the MASS library is in a directory included in your library search path (that is, the linker finds the library automatically). If this is not the case, you have to give the location of the library with the -L linker option. As -lmass replaces some of the functions in -lm, you must always link it before you link with -lm. xlf90 and its variants link automatically with -lm.
FFTW is a portable C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). FFTW’s performance is typically superior to that of other publicly available FFT software, and is even competitive with vendor-tuned codes. “FFTW,” which stands for the somewhat whimsical title of “Fastest Fourier Transform in the West.” It is installed in /nethome/libs/fftw.
Installed IO Libraries are listed below, ordered according to usage.
NetCDF (Network Common Data Format) is a set of software libraries and machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. Both 32 and 64 bit versions are available are installed in /nethome/libs/netcdf/3.6.3/32 and /nethome/libs/netcdf/3.6.3/64. For example, to link with 64-bit version of the NetCDF library:
xlf90 -O3 x.f -I/nethome/libs/netcdf/3.6.3/64/include -L/nethome/libs/netcdf/3.6.3/64/ -lnetcdf
HDF5 is a IO package that provides a versatile data model that can represent very complex data objects and a wide variety of metadata. It uses a completely portable file format with no limit on the number or size of data objects in the collection. The software library runs on a range of computational platforms, from laptops to massively parallel systems, and implementsa high-level API with C, C++, Fortran 90, and Java interfaces. It also provides a rich set of integrated performance features that allow for access time and storage space optimizations with several tools and applications for managing, manipulating, viewing, and analyzing the data in the collection. Version 5-1.8.3 is installed in /nethome/libs/hdf5.
Hierarchical Data Format (HDF4) is a general-purpose, machine-independent standard for storing scientific data in files, developed by the National Center for Supercomputing Applications (NCSA). Locally compiled with native IBM compilers. Version 4r2.3 is installed in /nethome/libs/hdf4.
The following software are available only on Ares head node.
The NCAR Command Language (NCL), a product of the Computational & Information Systems Laboratory at the National Center for Atmospheric Research (NCAR), is an interpreted language designed specifically for scientific data processing and visualization. NCL has robust file input and output. It can read and write netCDF-3, netCDF-4, HDF4, binary, and ASCII data, and read HDF-EOS2, GRIB1 and GRIB2 (as of version 4.3.0). It is installed in /nethome/apps/ncarg, and available via the modules package (see modules section on usage).
Ferret is an interactive computer visualization and analysis environment designed to meet the needs of oceanographers and meteorologists analyzing large and complex gridded data sets. It can transparently access extensive remote Internet data bases using OPeNDAP. Ferret offers a Mathematica-like approach to analysis; new variables may be defined interactively as mathematical expressions involving data set variables. Calculations may be applied over arbitrarily shaped regions. Fully documented graphics are produced with a single command. It is installed in /nethome/apps/ferret, and available via the modules package (see modules section on usage).
GMT is an open source collection of 60 tools for manipulating geographic and Cartesian data sets (including filtering, trend fitting, gridding, projecting, etc.) and producing Encapsulated PostScript File (EPS) illustrations ranging from simple x-y plots via contour maps to artificially illuminated surfaces and 3-D perspective views. GMT supports 30 map projections and transformations and comes with support data such as GSHHS coastlines, rivers, and political boundaries. It is installed in /nethome/apps/gmt, and available via the modules package (see modules section on usage).
Gnuplot is a portable command-line driven interactive data and function plotting utility. Gnuplot supports many types of plots in either 2D and 3D. It can draw using lines,points, boxes, contours, vector fields, surfaces, and various associated text. It also supports various specialized plot types. Locally compiled with gcc compilers. Version 4.2.3 is installed in /nethome/apps/gnuplot, and available via the modules package (see modules section on usage).