Wiki

Clone wiki

CS5220-S14 / modules

Modules

Like many clusters and supercomputing systems, the C4 cluster uses environment modules to make it easy to install different versions of software packages, or software packages that might conflict. In addition to the system modules, we have installed several packages for class use in the /share/cs-instructional/cs5220 directory. If you are using Bash (the default shell), then you can set up your environment to make these modules available (and load a default set of modules) by running

/share/cs-instructional/cs5220/setup.sh

This will modify your .bashrc and .bash_profile files to source

/share/cs-instructional/cs5220/vars.sh

which updates the module path and loads a default set of modules.

Default modules

The following modules will be automatically loaded via the above script:

  • cs5220-base: This package includes tmux, the most recent CMake, Graphviz, doxygen, valgrind, and several support libraries.

  • gcc-4.8.2: This is the most recent version of the GCC compiler suite, including the gcc, g++, and gfortran compilers. It is compiled with support for the Graphite loop optimization engine. There have been some notable improvements in GCC between 4.4.6 (the system default compiler) and 4.8.2 (this version), so we will mostly be using this version.

  • openmpi-1.6.5: This is a build of the most recent stable version of OpenMPI, compiled to use gcc 4.8.2 as the underlying compiler. We will be using this rather than the rocks-openmpi module as our default for MPI programming.

  • openblas: This is a high-performance open source implementation of the Basic Linear Algebra Subroutines (BLAS) library. It is currently used as the default BLAS, but is included as a module since we may want to try out different BLAS libraries (and keeping them separate makes it easier to figure out how to do this when using auto-configuration scripts).

  • lapack: This is the most recent release (3.5.0) of the LAPACK linear algebra library, compiled with the LAPACKE interfaces to make it easy to access from C.

  • sprng: This is version 4.4 of the Scalable Parallel Random Number Generator library. Useful if you want to do parallel Monte Carlo simulations. However, this required some patches to work on C4, and it's possible that I didn't get it quite right; your mileage may vary.

  • tau: This is the most recent version of the Tuning and Analysis Utilities (TAU) package, compiled with both Dyninst and the Program Database Toolkit (PDT) for instrumentation. We will be using this package for timing studies.

  • ipm: The Integrated Performance Monitoring (IPM) tool is a portable profiling infrastructure for parallel codes.

  • ploticus: Old-school plotting package used by IPM for generating profiling web pages. For your own plots, I highly recommend using matplotlib instead.

  • llvm: The Low-Level Virtual Machine (LLVM) project is a collection of modular and re-usable tools for toolchain and compiler development. This module loads the most recent stable release of LLVM (LLVM 3.3), along with the CLang compiler, the LLDB debugger, and the Polly loop optimizing compiler.

  • llvm-svn: This module loads the development version of LLVM (LLVM 3.5) along with the CLang compiler, the LLDB debugger, and the Polly loop optimizing compiler.

Other class modules

The following modules are also available, and we are likely to use them in class at various points.

  • anaconda: The Anaconda Python distribution includes many of the most popular scientific packages for Python, including several that are useful for high-performance computing. This module includes its own version of LLVM, so you may get some odd effects if you try to load it concurrently with the llvm module (loaded by default). I have set up the mpi4py package to work with the OpenMPI 1.6.5 compiler used in the class.

  • gperftools: Formerly known as the Google Performance Tools package, this is a lightweight thread-safe profiling library. It is in its own module for the moment purely because it needs to use an older version of libunwind.

  • icsxe: Thanks to a grant from the Intel academic program, we have a 25-seat floating license for the Intel Cluster Studio XE software. This includes the Intel compiler, MKL, VTune, and Intel MPI.

  • julia: Julia is a "high-level, high-performance dynamic programming language for technical computing". The syntax is largely MATLAB-like (though not exactly); it comes with lots of good numerical libraries; and it is quite fast, thanks to an LLVM-based just-in-time (JIT) compiler. The language includes support for parallel computing, but it takes a bit of manuevering to get this to play with the HTCondor system; more on that as the semester progresses.

  • upc: Unified Parallel C is an extension of standard C designed to provide a uniform interface for both shared-memory and distributed-memory programming.

Extra modules

The following modules are installed for you to play with or use for the class project. We are likely not to use them for any of the major homework problems.

  • petsc: The Portable Extensible Toolkit for Scientific Computing (PETSc) is a widely-used library of large-scale numerical linear algebra and nonlinear solver tools. It is particularly used for PDE solvers, but the toolkit is more general than that.

  • slepc: The Scalable Library for Eigenvalue Problems (SLEPc) is a PETSc-based package for large-scale eigenvalue problems.

  • tao: The Toolkit for Advanced Optimization (TAO) is a PETSc-based package for large-scale optimization problems.

  • sundials: The Suite of Nonlinear and Differential Algebraic Equation Solvers (SUNDIALS) is a collection of solvers for time-stepping differential equations (and differential-algebraic equations) and for solving nonlinear systems of equations.

  • trilinos: The Trilinos library is a collection of C++ solver package from Sandia. It plays a role analogous to the PETSc framework from Argonne. This Trilinos build is serial.

  • dealii: This deal.II finite element library is compiled for serial use, linked to the serial version of the Trilinos library.

  • visit: VisIt is a free visualization tool for scientific data. Please do not run this tool directly; a better choice is to use it in client-server mode. See the [local commentary][visit-setup] on setting up VisIt in client-server mode to work with C4.

Updated