Software

There are a number of software packages installed. To make a particular package available to use we are using the Environment Modules system. There are several implementations of Modules, BlueCrystal Phase 4 has Lmod which has several newer features over the TCL version (which was used on Phase 3).

Using Modules

To see the basic usage message run the command with no arguments:

module

To see all the modules that are available use module avail (example output elided for brevity)

[ce16990@bc4login5 ~]$ module avail

-------------------------- /mnt/storage/easybuild/modules/local --------------------------
  apps/amber16/tools17-mpi-intel
  apps/blast/gnu/2.7.1
  apps/chimera/1.12rc
  apps/cp2k/5.1
  apps/crystal/17v1.0.1-mpi-intel
  apps/ctffind4/4.1.8
  apps/gromacs/5.1.4-plumed-mpi-intel
  apps/gromacs/5.1.4-mpi-intel             (D)
  apps/iqtree/omp-1.5.5
  apps/ls-dyna/971R7.1.2
  apps/mafft/gnu/7.313-with-ext
  apps/motioncor2/2-1.0.2
  [ ... ]
  tools/cmake/3.8.2
  tools/subversion/1.9
  tools/sunstudio/12.6

--------------------------- /mnt/storage/easybuild/modules/all ---------------------------
  APR/1.5.2-foss-2016b
  APR-util/1.5.4-foss-2016b
  ATLAS/3.10.2-GCC-5.4.0-2.26-LAPACK-3.6.1
  Autoconf/2.69-foss-2016a
  Autoconf/2.69-foss-2016b
  [ ... ]
  zlib/1.2.8
  zlib/1.2.11-GCCcore-6.3.0                                   (D)

Note

The recommended modules on BC 4 are in the top section of module avail headed /mnt/storage/easybuild/modules/local. Modules in the section below this can lead to dependency issue and should be avoided if possible.

To find out more about a particular module use module whatis and the name of the module, e.g.:

[ce16990@bc4login1 ~]$ module whatis hwloc

hwloc/1.11.4-gcccuda-2016.10                           : Description: The
Portable Hardware Locality (hwloc) software package prov ides a portable
abstraction (across OS, versions, architectures, ...) of the hierarchical
topology of modern architectures, including NUMA memory nodes, sockets, shared
caches, cores and simultaneous multithreading. It also gathers various system
attributes such as cache and memory information as well as the locality of I/O
devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily aims
at helping applications with gathering information about modern computing
hardware so as to exploit it accordingly and efficiently. - Homepage:
http://www.open-mpi.org/projects/hwloc/

To list the modules you currently have loaded use module list e.g.:

[ce16990@bc4login1 ~]$ module list

Currently Loaded Modules:
  1) zlib/1.2.8

To load a module use module load and the name of the module, you can use the full name or a shorter version if it is unique. Afterwards your $PATH and some other variables will have been changed and you will be able to use the software:

[ce16990@bc4login1 ~]$ which java
/usr/bin/which: no java in (/mnt/storage/home/chzcjw/local/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/lpp/mmfs/bin:/mnt/storage/home/ce16990/.local/bin:/mnt/storage/home/ce16990/bin)

[ce16990@bc4login1 ~]$ module load Java/1.8.0_92
[ce16990@bc4login1 ~]$ module list

Currently Loaded Modules:
  1) zlib/1.2.8   2) Java/1.8.0_92

[ce16990@bc4login1 ~]$ which java
/mnt/storage/easybuild/software/Java/1.8.0_92/bin/java

To unload use module unload and the name of the module:

[ce16990@bc4login1 ~]$ module unload Java
[ce16990@bc4login1 ~]$ module list

Currently Loaded Modules:
  1) zlib/1.2.8

To unload all modules at once use module purge

[ce16990@bc4login1 ~]$ module purge
[ce16990@bc4login1 ~]$ module list
No modules loaded

Module Dependencies

If a module depends on another one for correct operation, Lmod loads the dependent modules for you as well.

E.g.

[ce16990@bc4mgmt1 docs]$ module list # before
No modules loaded
[ce16990@bc4mgmt1 docs]$ module load languages/intel/2017.01
[ce16990@bc4mgmt1 docs]$ module list # after

Currently Loaded Modules:
  1) GCCcore/5.4.0                     5) impi/2017.1.132-GCC-5.4.0-2.26
  2) binutils/2.26-GCCcore-5.4.0       6) vtune/2017.1.132-GCC-5.4.0-2.26
  3) icc/2017.1.132-GCC-5.4.0-2.26     7) languages/intel/2017.01
  4) ifort/2017.1.132-GCC-5.4.0-2.26

Note

Lmod does not unload dependent modules on module unload. E.g.

[ce16990@bc4login1 ~]$ module load hwloc
[ce16990@bc4login1 ~]$ module list

Currently Loaded Modules:
  1) GCCcore/5.4.0                 5) gcccuda/2016.10
  2) binutils/2.26-GCCcore-5.4.0   6) numactl/2.0.11-gcccuda-2016.10
  3) GCC/5.4.0-2.26                7) hwloc/1.11.4-gcccuda-2016.10
  4) CUDA/8.0.44-GCC-5.4.0-2.26

[ce16990@bc4login1 ~]$ module unload hwloc
[ce16990@bc4login1 ~]$ module list

Currently Loaded Modules:
  1) GCCcore/5.4.0                 4) CUDA/8.0.44-GCC-5.4.0-2.26
  2) binutils/2.26-GCCcore-5.4.0   5) gcccuda/2016.10
  3) GCC/5.4.0-2.26                6) numactl/2.0.11-gcccuda-2016.10

Note

It is recommended that the required modules are loaded in your job submission script rather than in your .bashrc file.