Environment Modules on Pi

Environment modules can assist you to use prebuilt software packages on Pi. Each environment module is a set of environment settings that can be applied and unapplied on the fly. User can write their own modules.

This document introduce basic usage of environment modules along with available software modules on Pi.

Load Module Path

$ unset MODULEPUATH; module use /lustre/usr/modulefiles/pi

Modules Commands

Command Function
module use [PATH] Add files under [PATH] into module list
module avail List all modules
module load [MODULE] Load [MODULE]
module unload [MODULE] Unload [MODULE]
module purge Unload all modules
module whatis [MODULE] Show basic info about [MODULE]
module info [MODULE] Show detailed info about [MODULE]
module display [MODULE] Display info about [MODULE]
module load [MODULE] Load [MODULE]
module help Get help

module use [PATH]: Import module files

module use will import all available module files under [PATH] which will be available in module commands. Autally, [PATH] is added to the beginning of MODULEPATH environment variable.

To use the smart modules that are available for SLURM only, please unset MODULEPATH and import modules from /lustre/utility/modulefiles/pi. For more information about the upcomming SLURM system, please refer to here.

$ unset MODULEPATH
$ module use /lustre/usr/modulefiles/pi

module avail: List available modules

$ mdoule avail
------------------------------------------------------------------------ /lustre/usr/modulefiles/pi -------------------------------------------------------------------------
abyss/1.9(default)       cuda/7.5(default)        genetorrent/3.8(default) lapack/3.5(default)      openblas/0.2(default)    R/3.2(default)
ascend/0.9(default)      cudnn/1.0                gmp/6.0(default)         maq/0.7(default)         opencv/2.4(default)      samtools/1.2(default)
...
cityhash/1.1(default)    gcc/4.9(default)         jdk/1.7                  netcdf/4.3(default)      python/2.7(default)
cuda/6.5                 gcc/5.1                  jdk/1.8(default)         octave/4.0(default)      python/3.4

module purge/load/unload/list: A complete module workflow

It is a good practice to uanload all loaded modules before starting a new job.

$ mdoule purge

Multiple modules can be loaded or unloaded at a time.

$ mdoule load gcc/4.9 openmpi/1.6 openblas/0.8
$ module unload openmpi/1.6 openblas/0.8

You can check loaded modules at anytime of your work.

$ module list

Smart modules for SLURM

On SLURM, we applied the following rules to derive the most appropriate modules.

  1. Compiler: If gcc or icc is loaded, load the modules compiled against the corresponding compiler. Or the default compiler, gcc, will be loaded when necessary.
  2. MPI Library: If one of those libraries (openmpi, impi, mvapich2, mpich) is loaded, load the modules compiled against the corresponding MPI. Or the default MPI lib, openmpi, will be loaded when necessary.
  3. Module veriosn: A default version is set for each module, which will be loaded if no version number is specified.

On SLURM, the following clauses have the same effect as the one does above.

$ module load gcc/4.9 openmpi/1.6 fftw/3.3

Or, version number can be neglected if you prefer the latest stable version.

$ module load gcc openmpi fftw

Software Modules on Pi

Pi has many prebuilt software modules and the number keeps growing. You are welcome to tell us the popular software in your research fields. As being charged little or even zero, opensource software will have higher priority to install.

Software on Pi can be categorized into compilers and platforms, MPI libs, Math libs, FD tools, bioinfo tools, and so on.

Compilers and Platforms

Module Name Description Available Versions Default Version Notes
gcc GNU compile collection 4.6 4.7 4.8 4.9 5.1 4.9
icc Intel compiler suite 14.0 15.0 15.0
pgi PGI compiler 15.7 15.7
cuda NVIDIA CUDA SDK 6.5 7.5 7.5
python Python programming language 2.7 3.4 2.7
R R programming language 3.2 3.2
perl Perl programming language 5.22 5.22
jdk Java development kit 1.6 1.7 1.8 1.8
jdk Java development kit 1.6 1.7 1.8 1.8
octave GNU Octave 4.0 4.0
scilab GNU Octave 5.5 5.5

MPI Libraries

Module Name Description Available Versions Default Version Notes
openmpi OpenMPI 1.6 1.10 1.10
mvapich2 MVAPICH2 2.0 2.1 2.1
mpich MPICH 1.4 1.5 3.2 3.2
impi Intel MPI 4.1 5.0 5.0

Math Libraries

Module Name Description Available Versions Default Version Notes
mkl Intel Math Kernel Librarires 11.1 11.2 11.2 Containing FFTW, BLAS, LAPACK implementaitons
gsl GNU Scientific Libraries 1.16 1.16
fftw2 FFT West 2 2.1 2.1
fftw3 FFT West 3 3.3 3.3
atlas Autotuning Linear Algebra Libraries 3.10 3.10 Containing BLAS implementations
openblas Open BLAS Libraries 0.2 0.2 Conataining BLAS and LAPACK implementations
lapack Linear Algebra Package 3.5 3.5 Containing LAPACK implemenations, using atlas as its BLAS backend
eigen A C++ Template Libraries for Linear Algebra 3.2 3.2
gmp GNU Multi-precision Libraries 6.0 6.0
mpfr GNU Multi-precision Floating Libraries 3.1 3.1
mpc Arbitary-precision Floating Libraries 1.0 1.0
cgal The Computational Geometry Algorithms Library 4.7 4.7
scotch 5.1 6.0 6.0

Bioinfomatic Libraries

Module Name Description Available Versions Default Version Notes
abyss 1.9 1.9
maq Mapping and Assembly with Quality 0.7 0.7
bcftools 1.2 1.2
bowtie 1.1 2.2 2.2
bwa 0.7 0.7
gatk 3.4 3.4
samtools 1.2 1.2
smufin 0.9 0.9
soapdenovo r240 r240
htslib 1.2 1.2

Fluid Dynamics

Module Name Description Available Versions Default Version Notes
acend 0.9 0.9
openfoam 1.6-ext 2.0 2.1 2.3 2.3

Molecule Dyanmics

Module Name Description Available Versions Default Version GPU enabled Notes
gromacs 5.0.5 5.0.5 Yes

Computer Vision and Deep Learning

Module Name Description Available Versions Default Version GPU enabled Notes
cudnn 1.0 2.0 3.0 3.0 Yes
opencv 2.4 2.4 No
ffmpeg 2.8 2.8 No
caffe 1.0 1.0 Yes

Utility Libraries

Module Name Description Available Versions Default Version Notes
boost 1.57 1.59 1.59
spasehash 2.0 2.0
cityhash 1.1 1.1
netcdf 4.3 4.3
hdf5 1.8 1.8
pnetcdf Parallel NETCDF 1.6 1.6
phdf5 Parallel HDF5 1.8 1.8
szip 2.1 2.1
ipp Intel Integrated Performance Primitives 8.1 8.2 8.1
tbb Intel Thread Buiding Block 4.2 4.3 4.3

Tools for Building and Tuning Software

Module Name Description Available Versions Default Version Notes
maven 3.3 3.3
bazel 0.1 0.1
vtune Intel VTune 5.1 5.1

Benchmark Tools

Module Name Description Available Versions Default Version Notes
mdtest 1.9 1.9

Reference