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:
.. code:: bash
module
To see all the modules that are available use ``module avail`` (example output
elided for brevity)
.. code:: bash
[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.:
.. code:: bash
[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.:
.. code:: bash
[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:
.. code:: bash
[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:
.. code:: bash
[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``
.. code:: bash
[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.
.. code:: bash
[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.
.. code:: bash
[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.