This Mathematical Software Overview compares the chief mathematical subroutine libraries available and explains the lookup and support tools (including reference manuals) that help you use those libraries effectively. It also introduces a few important, commercial, interactive math tools available at LC.
The belief behind LC's approach to mathematical software support is that computational tasks required in a wide variety of applications share common, mathematically defined features to which general purpose techniques can be applied. This results in a long-term overall cost savings through software reuse and reduced duplication of effort. This approach was long embodied in LC's former Mathematical Software Support Service (MSS) and its predecessor groups. It is still reflected in the surviving products of those groups, including local libraries (such as PMATH) and local self-help sites for numerical mathematics software, such as the LINMath website. In addition, LC maintains math libraries in compiled (object) form, mostly from commercial vendors, on its machines. This document surveys those libraries and sites, compares their features, and offers links to current reference documentation.
Math Libraries and Interactive Tools
Users often ask which mathematics libraries and interactive mathematical tools are "available" on which LC systems. The answer depends on what you regard as availability and on how much customization you need (or are willing to perform). Some mathematics libraries, mostly from commercial vendors, are preinstalled as compiled (object) code. The libraries sometimes overlap. Some routines are optimized and some are not; some are threaded and some are not; some support MPI and some do not; some are portable and some are not; some are single or double precision. Only your own computational needs can determine which of these competing libraries are most appropriate for your work.
Mathematics or numerical libraries are designed to be incorporated into user applications. They contain high-quality implementations of common tasks such as linear algebra solvers or fast Fourier transforms.
In addition to the relatively small set of preinstalled math libraries, there is a much larger set of downloadable source-code math software routines and packages (around 1400 in all) on both OCF (CZ and RZ) and SCF, at the LINMath website. This semi-interactive site offers four different collections (SLATEC, PMATH, MSSL, and mssl3) of non-proprietary software, organized by problem type. The software addresses a wide range of mathematical and statistical problem types, from simple (e.g., vector operations) to complex (e.g., differential equation solvers), and represents the result of efforts in the numerical math research community since the 1970s. LINMath also provides links to many other popular math software packages that are available elsewhere. The LINMath routines and packages also overlap somewhat with the commercial libraries (BLAS is an example), so in those cases you must decide which alternative best meets your specific needs.
Interactive mathematical tools are stand-alone applications that can be used for numerical analysis, data analysis, and display. These tools have both a GUI and a command-line interface.
The table below shows at a glance which major libraries and interactive mathematical tools reside on which LC machines. Each library or tool name is a link to more information about that library or tool.
|ATLAS||Automatically Tuned Linear Algebra Software||Linux||See the ATLAS website|
|BLAS||Basic Linear Algebra Subroutines||Linux
|See ATLAS, MKL, or ACML (Linux); ESSL (CORAL)
See the BLAS website
|ESSL||IBM Engineering and Scientific Subroutine Library||CORAL||/usr/tcetmp/packages/essl/essl-<version>/READMES/*.README
See the IBM's ESSL Guide and Reference
|FFTW||Fast Fourier Library||Linux
|See the FFTW website
|GSL||GNU Scientific Library||Linux||See the GNU GSL website|
|LAPACK||Dense linear algebra||Linux
|See ATLAS, MKL, or ACML Linux; ESSL (CORAL)
See the LAPACK website
|LIBM||Standard C math library||Linux||See the LIBM man page|
|MKL||Intel Math Kernel Library||Linux||See the documentation directory in /usr/tce/packages/mkl/mkl-<version>
See the Intel MKL website
|MSSL/mssl3||Mathematics and Statistics Software Library is a collection of (mostly Fortran) routines in source code form||MSSL/mssl3 is available from the LINMath website as source code, which you can then move to any machine and compile.|
|ODEPACK||ODEPACK is a collection of Fortran solvers for the initial value problem for ordinary differential equation systems.||See the ODEPACK website|
|PETSc||Collection of routines for solving linear systems||Linux
|See the PETSc website|
|PMATH||Machine-independent portable math subroutine library||PMATH is available from the LINMath website as source code, which you can then move to any machine and compile.|
|ScaLAPACK||Library of high-performance linear algebra routines for distributed-memory message-passing MIMD computers||Linux
|See the Scalable Linear Algebra PACKage website|
|SLATEC||Comprehensive software library with over 1400 general purpose mathematical and statistical routines written in Fortran 77||SLATEC is available from the LINMath website as source code, which you can then move to any machine and compile.|
|Interactive Math Tool||Description||Availability||Documentation|
|Mathematica||Symbolic mathematics tool||Linux||Within Mathematica; see also the Mathematica vendor website|
|MATLAB||A high-level language and interactive environment for numerical computation, visualization, and programming||Linux||Within MATLAB; see also the MATLAB vendor website|
|Octave||High-level language primarily intended for numerical computations||Linux||Within Octave; see also the GNU Octave website|