COST Quick Reference Guide

The Common Open Source Tools (COST) is a stack of libraries and tools supporting the Baseline Configuration policy FY13-01 (Common Open Source Software Base). All packages and libraries in COST are built on each machine with the GNU Compiler Collection (GCC). The COST package allows users of the HPCMP allocated HPC systems to develop software and to have their jobs run in a similar fashion independent of the machine.

Change Log

Date Change
11 October 2018 Removed: Open|SpeedShop
11 September 2018 Added: Dakota, Open|SpeedShop
Corrected: Formatting
26 August 2016 Added: BOOST C++, CMake, Git, Parallel netCDF
Removed: BLAS, GotoBLAS2

Packages and Libraries Included:

ARPACK BOOST C++ CMake
Dakota FFTW Git
Gnuplot GSL HDF5
IPython LAPACK Matplotlib
MPI4Py NCL & NCAR Graphics NetCDF-C
NetCDF-CXX NetCDF-FORTRAN NumPy
Octave PAPI Parallel NetCDF
PARPACK PETSc PyMPI
Python ScaLAPACK SCALASCA
SciPy SuperLU TAU
Valgrind XDMF

How to Use the COST Software and Libraries

  • Initial module setup
    • module load costinit
  • View what software is available
    • module avail (then look towards the top of the module listing)
  • Load the desired module (python as an example)
    • module load python/gnu
  • After loading the module, the software package or library will be added to your path.

Module name format for COST applications is application/compiler/version for serial libraries and applications and application-mpi/compiler/MPI Stack/version for MPI libraries and applications. For example, to load the COST version of Python:

module load costinit
module load python/gnu/2.7.9

When loading modules, the version tag can be left off. This will load the newest version of the software, should more than one version exist. For example, to load the COST version of Python without using version:

module load costinit
module load python/gnu

More information about the module command can be found at https://www.afrl.hpc.mil/docs/modulesUserGuide.html and http://modules.sourceforge.net/.

Compiler Support

The COST stack consists of Open Source Software, most of which was written with the Gnu Compiler Collection (GCC) in mind. Because of this, the COST stack is built using primarily GCC on all HPC systems and GCC is the primary supported compiler for the COST application stack.

Other compilers that are OSS-friendly will be considered on an as-needed and best-effort support basis. At this time, the PGI and Cray Compiler suites are not supported.


Software Explanation

ARPACK

Description

ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems.

The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse or structured matrices A where structured means that a matrix-vector product w <- Av requires order n rather than the usual order n2 floating point operations. This software is based upon an algorithmic variant of the Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When the matrix A is symmetric it reduces to a variant of the Lanczos process called the Implicitly Restarted Lanczos Method (IRLM). These variants may be viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly Shifted QR technique that is suitable for large scale problems. For many standard problems, a matrix factorization is not required. Only the action of the matrix on a vector is needed.

Usage

module load arpack/compiler/version

Examples

module load arpack/gnu/96

Vendor Links

http://www.caam.rice.edu/software/ARPACK


BOOST C++

Description

Boost is a set of libraries for the C++ programming language that provide support for tasks and structures such as linear algebra, pseudorandom number generation, multithreading, image processing, regular expressions, and unit testing. It contains over eighty individual libraries.

COST provides both the serial (thread-enabled) and MPI versions of BOOST C++.

Usage

module load boost/compiler/version
- or -
module load boost-mpi/compiler/MPI Stack/version

Examples

module load boost/gnu/1.58.0
- or -
module load boost-mpi/gnu/sgimpt/1.58.0

Vendor Links

http://www.boost.org/


CMake

Description

CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK.

Usage

module load cmake/compiler/version

Examples

module load cmake/gnu/3.2.3

Vendor Links

https://cmake.org


Dakota

Description

From: https://dakota.sandia.gov/content/about

The Dakota project delivers both state-of-the-art research and robust, usable software for optimization and UQ. Broadly, the Dakota software's advanced parametric analyses enable design exploration, model calibration, risk analysis, and quantification of margins and uncertainty with computational models. The Dakota toolkit provides a flexible, extensible interface between such simulation codes and its iterative systems analysis methods, which include:

  • optimization with gradient and non-gradient-based methods;
  • uncertainty quantification with sampling, reliability, stochastic expansion, and epistemic methods;
  • parameter estimation using nonlinear least squares (deterministic) or Bayesian inference (stochastic); and
  • sensitivity/variance analysis with design of experiments and parameter study methods.

These capabilities may be used on their own or as components within advanced strategies such as hybrid optimization, surrogate-based optimization, mixed integer nonlinear programming, or optimization under uncertainty.

Usage

Dakota is provided through COST by the Productivity Enhancement and Training (PET) program. As such, the module name for Dakota may not conform to the standard COST module naming scheme and may vary from system to system. In general, the following will load Dakota on most systems, though the user may wish to look at all available Dakota modules:

module load dakota

Examples

module load dakota

Vendor Links

https://dakota.sandia.gov/


FFTW

Description

FFTW is a 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).

COST provides both the serial (thread-enabled) and MPI versions of FFTW.

Usage

module load fftw3/compiler/version
- or -
module load fftw3-mpi/compiler/MPI Stack/version

Examples

module load fftw3/gnu/3.3.4
- or -
module load fftw3-mpi/gnu/sgimpt/3.4.4

Vendor Links

http://www.fftw.org


Git

Description

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Usage

module load git/compiler/version

Examples

module load git/gnu/2.4.4

Vendor Links

https://git-scm.com/


Gnuplot

Description

Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms. The source code is copyrighted but freely distributed (i.e., you don't have to pay for it). It was originally created to allow scientists and students to visualize mathematical functions and data interactively, but has grown to support many non-interactive uses such as web scripting. It is also used as a plotting engine by third-party applications like Octave. Gnuplot has been supported and under active development since 1986.

Usage

module load gnuplot/compiler/version

Examples

module load gnuplot/gnu/5.0.0

Vendor Links

http://www.gnuplot.info/


GSL

Description

The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.

The library provides a wide range of mathematical routines such as random number generators, special functions, and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

The complete range of subject areas covered by the library includes:

Subject Areas Covered
Complex Numbers Roots of Polynomials Special Functions
Vectors and Matrices Permutations Sorting
BLAS Support Linear Algebra Eigensystems
Fast Fourier Transforms Quadrature Random Numbers
Quasi-Random Sequences Random Distributions Statistics
Histograms N-Tuples Monte Carlo Integration
Simulated Annealing Differential Equations Interpolation
Numerical Differentiation Chebyshev Approximation Series Acceleration
Discrete Hankel Transforms Root-Finding Minimization
Least-Squares Fitting Physical Constants IEEE Floating-Point
Discrete Wavelet Transforms Basis splines Running Statistics
Sparse Matrices and Linear
Usage

module load gsl/compiler/version

Examples

module load gsl/gnu/1.16

Vendor Links

http://www.gnu.org/software/gsl


HDF5 & HDF5-parallel

Description

HDF5 is a data model, library, and file format for storing and managing data. It supports an unlimited variety of datatypes, and is designed for flexible and efficient I/O and for high volume and complex data. HDF5 is portable and is extensible, allowing applications to evolve in their use of HDF5. The HDF5 Technology suite includes tools and applications for managing, manipulating, viewing, and analyzing data in the HDF5 format.

Note: Due to changes in SGI's MPT compilers, the GCC-built version of HDF5-parallel is not supported when using sgimpt as an MPI stack. On SGI systems, users are encouraged to use the hdf5-mpi/intel/sgimpt or hdf5-mpi/gcc/intelmpi modules.

Usage

module load hdf5/compiler/version
- or -
module load hdf5-mpi/compiler/MPI Stack/version

Examples

module load hdf5/gnu/1.8.15
- or -
module load hdf5-mpi/gnu/intelmpi/1.8.15

Vendor Links

http://www.hdfgroup.org/HDF5/


IPython

Description

IPython provides a rich architecture for interactive computing with:

  • Powerful interactive shells (terminal and Qt-based).
  • A browser-based notebook with support for code, text, mathematical expressions, inline plots and other rich media.
  • Support for interactive data visualization and use of GUI toolkits.
  • Flexible, embeddable interpreters to load into your own projects.
  • Easy to use, high performance tools for parallel computing.

Note: Due to security concerns, any functions that require IPython's webserver (Notebook and Terminal) or ZeroMQ/PyZMQ (Parallel) modules and libraries are disabled.

Usage

module load python/compiler/version
module load ipython/compiler/version

Examples

module load python/gnu/2.7.9
module load ipython/gnu/3.0.0

Vendor Links

http://ipython.org/


LAPACK

Description

LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, and generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.

Basic Linear Algebra Subroutine (BLAS) is a de facto application programming interface standard for publishing libraries to perform basic linear algebra operations such as vector and matrix multiplication.

Usage

module load lapack/compiler/version

Examples

module load lapack/gnu/3.5.0

Vendor Links

http://www.netlib.org/lapack


Matplotlib

Description

Matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. Matplotlib can be used in python scripts, the python and ipython shell (ala MATLAB® or Mathematica®), web application servers, and six graphical user interface toolkits.

Usage

module load python/compiler/version
module load matplotlib/compiler/version

Examples

module load python/gnu/2.7.9
module load matplotlib/gnu/1.4.3

Vendor Links

http://matplotlib.org


MPI4Py

Description

This package is constructed on top of the MPI-1/2 specifications and provides an object oriented interface which closely follows MPI-2 C++ bindings. It supports point-to-point (sends, receives) and collective (broadcasts, scatters, gathers) communications of any pickable Python object, as well as optimized communications of Python object exposing the single-segment buffer interface (NumPy arrays, built-in bytes/string/array objects).

Usage

module load python/compiler/version
module load mpi4py/compiler/MPI Stack/version

Examples

module load python/gnu/2.7.9
module load mpi4py/gnu/sgimpt/1.3.1

Vendor Links

http://mpi4py.scipy.org


NCL & NCAR Graphics

Description

NCL/NCAR Graphics is comprised of:

  • A library containing over two dozen Fortran/C utilities for drawing contours, maps, vectors, streamlines, weather maps, surfaces, histograms, X/Y plots, annotations, and more
  • An ANSI/ISO standard version of GKS, with both C and FORTRAN callable entries
  • A math library containing a collection of C and Fortran interpolators and approximators for one-dimensional, two-dimensional, and three-dimensional data
  • Applications for displaying, editing, and manipulating graphical output
  • Map databases
  • Hundreds of FORTRAN and C examples
  • Demo programs
  • Compilation scripts
Usage

module load ncl_ncarg/compiler/version

Examples

module load ncl_ncarg/gnu/6.3.0

Vendor Links

http://www.ncl.ucar.edu/overview.shtml


NetCDF-C

Description

NetCDF-C (network Common Data Form) is a set of interfaces for array-oriented data access and a freely distributed collection of data access libraries for C. The NetCDF-C libraries support a machine-independent format for representing scientific data. Together, the interfaces, libraries, and format support the creation, access, and sharing of scientific data.

NetCDF is available in C, C++, and FORTRAN library sets. As each library set is versioned differently from the developer, they are available as different modules.

Usage

module load netcdf-c/compiler/version

Examples

module load netcdf-c/gnu/4.3.31

Vendor Links

http://www.unidata.ucar.edu/software/netcdf/


NetCDF-CXX

Description

NetCDF-CXX (network Common Data Form) is a set of interfaces for array-oriented data access and a freely distributed collection of data access libraries for C++. The NetCDF-CXX libraries support a machine-independent format for representing scientific data. Together, the interfaces, libraries, and format support the creation, access, and sharing of scientific data.

NetCDF is available in C, C++, and FORTRAN library sets. As each library set is versioned differently from the developer, they are available as different modules.

Usage

module load netcdf-cxx/compiler/version

Examples

module load netcdf-cxx/gnu/4.2

Vendor Links

http://www.unidata.ucar.edu/software/netcdf/


NetCDF-FORTRAN

Description

NetCDF (network Common Data Form) is a set of interfaces for array-oriented data access and a freely distributed collection of data access libraries for FORTRAN. The netCDF libraries support a machine-independent format for representing scientific data. Together, the interfaces, libraries, and format support the creation, access, and sharing of scientific data.

NetCDF is available in C, C++, and FORTRAN library sets. As each library set is versioned differently from the developer, they are available as different modules.

Usage

module load netcdf-fortran/compiler/version

Examples

module load netcdf-fortran/gnu/4.4.2

Vendor Links

http://www.unidata.ucar.edu/software/netcdf/


NumPy

Description

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

  • A powerful N-dimensional array object
  • Sophisticated (broadcasting) functions
  • Tools for integrating C/C++ and Fortran code
  • Useful linear algebra, Fourier transform, and random number capabilities
Usage

module load python/compiler/version
module load numpy/compiler/version

Examples

module load python/gnu/2.7.9
module load numpy/gnu/1.9.2

Vendor Links

http://www.numpy.org/


Octave

Description

GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable.

Usage

module load octave/compiler/version

Examples

module load octave/gnu/4.0

Vendor Links

http://www.gnu.org/software/octave


PAPI

Description

PAPI provides the tool designer and application engineer with a consistent interface and methodology for use of the performance counter hardware found in most major microprocessors. PAPI enables software engineers to see, in near real time, the relation between software performance and processor events.

COST provides both the serial and MPI versions of PAPI.

Usage

module load papi/compiler/version
- or -
module load papi-mpi/compiler/MPI Stack/version

Examples

module load papi/gnu/5.4.1
- or -
module load papi-mpi/gnu/sgimpt/5.4.1

Vendor Links

http://icl.cs.utk.edu/papi/


Parallel netCDF

Description

PnetCDF is a library providing high-performance parallel I/O while still maintaining file-format compatibility with Unidata's NetCDF, specifically the formats of CDF-1 and CDF-2. Although NetCDF supports parallel I/O starting from version 4, the files must be in HDF5 format. PnetCDF is currently the only choice for carrying out parallel I/O on files that are in classic formats (CDF-1 and 2).

In addition, PnetCDF supports the CDF-5 file format, an extension of CDF-2, that supports more data types and allows users to define large dimensions, attributes, and variables (>2B elements).

NetCDF gives scientific programmers a self-describing and portable means for storing data. However, prior to version 4, netCDF does so in a serial manner. By making some small changes to the netCDF APIs, PnetCDF can use MPI-IO to achieve high-performance parallel I/O.

Usage

module load pnetcdf-mpi/compiler/MPI Stack/version

Examples

module load pnetcdf-mpi/gnu/sgimpt/0.96

Vendor Links

https://trac.mcs.anl.gov/projects/parallel-netcdf


PARPACK

Description

PARPACK is a collection of parallel Fortran77 subroutines designed to solve large scale eigenvalue problems. The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse or structured matrices A where structured means that a matrix-vector product w <- Av requires order n rather than the usual order n2 floating point operations. This software is based upon an algorithmic variant of the Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When the matrix A is symmetric it reduces to a variant of the Lanczos process called the Implicitly Restarted Lanczos Method (IRLM). These variants may be viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly Shifted QR technique that is suitable for large scale problems. For many standard problems, a matrix factorization is not required. Only the action of the matrix on a vector is needed.

Usage

module load parpack/compiler/MPI Stack/version

Examples

module load parpack/gnu/sgimpt/0.96

Vendor Links

http://www.caam.rice.edu/software/ARPACK


PETSc & PETSc MPI

Description

PETSc is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It supports MPI, shared memory pthreads, and NVIDIA GPUs, as well as hybrid MPI-shared memory pthreads or MPI-GPU parallelism.

COST provides both the serial and MPI versions of PAPI. Debug versions are also available.

Usage

module load petsc/compiler/version
- or -
module load petsc-debug/compiler/version
- or -
module load petsc-mpi/compiler/MPI Stack/version
- or -
module load petsc-mpi-debug/compiler/MPI Stack/version

Examples

module load petsc/gnu/3.6.3
- or -
module load petsc-debug/gnu/3.6.3
- or -
module load petsc-mpi/gnu/sgimpt/3.6.3
- or -
module load petsc-mpi-debug/gnu/sgimpt/3.6.3

Vendor Links

http://www.mcs.anl.gov/petsc


PyMPI

Description

This package builds on traditional Python by enabling users to write distributed, parallel programs based on MPI message passing primitives. General python objects can be messaged between processors.

Usage

module load pympi/compiler/MPI Stack/version

Examples

module load pympi/gnu/sgimpt/2.50b

Vendor Links

http://pympi.sourceforge.net


Python

Description

Python is an interpreted, interactive, object-oriented programming language. It is often compared to Tcl, Perl, Scheme or Java.

Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.

Usage

module load python/compiler/version
- or -
module load python3/compiler/version

Examples

module load python/gnu/2.7.9
- or -
module load python3/gnu/3.5.1

Vendor Links

http://www.python.org/


ScaLAPACK

Description

ScaLAPACK is a library of high-performance linear algebra routines for parallel distributed memory machines. ScaLAPACK solves dense and banded linear systems, least squares problems, eigenvalue problems, and singular value problems.

Usage

module load scalapack/compiler/version

Examples

module load scalapack/gnu/2.0.2

Vendor Links

http://www.netlib.org/scalapack


SCALASCA

Description

Scalasca is a software tool that supports the performance optimization of parallel programs by measuring and analyzing their runtime behavior. The analysis identifies potential performance bottlenecks - in particular those concerning communication and synchronization - and offers guidance in exploring their causes.

COST provides both the serial and MPI versions of SCALASCA.

Usage

module load scalasca/compiler/version
- or -
module load scalasca-mpi/compiler/MPI Stack/version

Examples

module load scalasca/gnu/2.2.1
- or -
module load scalasca-mpi/gnu/sgimpt/2.2.1

Vendor Links

http://www.scalasca.org/


SciPy

Description

SciPy is open-source software for mathematics, science, and engineering. It is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built to work with NumPy arrays, and provides efficient numerical routines such as routines for numerical integration and optimization.

Usage

module load python/compiler/version
module load scipy/compiler/version

Examples

module load python/gnu/2.7.9
module load scipy/gnu/0.15.1

Vendor Links

http://www.scipy.org


SuperLU

Description

SuperLU is a general purpose library for the direct solution of large, sparse, non-symmetric systems of linear equations on high performance machines. The library is written in C and is callable from either C or Fortran. The library routines will perform an LU decomposition with partial pivoting and triangular system solves through forward and back substitution. The LU factorization routines can handle non-square matrices but the triangular solves are performed only for square matrices. The matrix columns may be preordered (before factorization) either through library or user supplied routines. This preordering for sparsity is completely separate from the factorization. Working precision iterative refinement subroutines are provided for improved backward stability. Routines are also provided to equilibrate the system, estimate the condition number, calculate the relative backward error, and estimate error bounds for the refined solutions.

Usage

module load superlu/compiler/version

Examples

module load superlu/gnu/4.3

Vendor Links

http://crd-legacy.lbl.gov/~xiaoye/SuperLU


TAU

Description

TAU (Tuning and Analysis Utilities) is capable of gathering performance information through instrumentation of functions, methods, basic blocks, and statements. All C++ language features are supported including templates and namespaces. The API also provides selection of profiling groups for organizing and controlling instrumentation. The instrumentation can be inserted in the source code using an automatic instrumentor tool based on the Program Database Toolkit (PDT), dynamically using DyninstAPI, at runtime in the Java Virtual Machine, or manually using the instrumentation API.

TAU's profile visualization tool, paraprof, provides graphical displays of all the performance analysis results, in aggregate and single node/context/thread forms. The user can quickly identify sources of performance bottlenecks in the application using the graphical interface. In addition, TAU can generate event traces that can be displayed with the Vampir, Paraver or JumpShot trace visualization tools.

COST provides both the serial and MPI versions of TAU.

Usage

module load tau/compiler/version
- or -
module load tau-mpi/compiler/MPI Stack/version

Examples

module load tau/gnu/2.24.1
- or -
module load tau-mpi/gnu/sgimpt/2.24.1

Vendor Links

http://www.cs.uoregon.edu/research/tau/home.php


Valgrind

Description

Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.

COST provides both the serial and MPI versions of Valgrind.

Usage

module load valgrind/compiler/version
- or -
module load valgrind-mpi/compiler/MPI Stack/version

Examples

module load valgrind/gnu/3.10.1
- or -
module load valgrind-mpi/gnu/sgimpt/3.10.1

Vendor Links

http://valgrind.org/


XDMF

Description

The need for a standardized method to exchange scientific data between High Performance Computing codes and tools lead to the development of the eXtensible Data Model and Format (XDMF). Uses for XDMF range from a standard format used by HPC codes to take advantage of widely used visualization programs like ParaView, to a mechanism for performing coupled calculations using multiple, previously stand alone codes.

COST provides both the serial and MPI versions of XDMF.

Usage

module load xdmf/compiler/version
- or -
module load xdmf-mpi/compiler/MPI Stack/version

Examples

module load xdmf/gnu/v3
- or -
module load xdmf-mpi/gnu/sgimpt/v3

Vendor Links

http://www.xdmf.org/index.php/Main_Page




All descriptions found on vendors' websites