Enviroment Modules¶
A lot of commonly used software has been built on the cluster and can be used by everyone through a system called environment modules, or just modules for short.
Environment Modules is a system for dynamically loading software packages into your environment using a command line tool called module. Software packages are installed in a central, read-only location by the HPC support team and then a modulefile is built for the software which modifies your environment when you load this module, so that the software becomes visible to you.
This system makes it easy for everyone to find and load pre-built software into their environment to use with their programs, and allows multiple versions of the same software to coexist on the system together.
List Available Software¶
module avail List all the software available in the shared area on the cluster,
$ module avail
--------------------------- /cm/local/modulefiles ------------------
cluster-tools/6.1 dot ipmitool/1.8.12 module-info openldap use.own
cmd freeipmi/1.2.6 module-git null shared version
-------------------------- /cm/shared/modulefiles ------------------------
3b/2.2
acml/gcc/64/5.3.1
acml/gcc/fma4/5.3.1
acml/gcc/mp/64/5.3.1
acml/gcc/mp/fma4/5.3.1
acml/gcc-int64/64/5.3.1
acml/gcc-int64/fma4/5.3.1
acml/gcc-int64/mp/64/5.3.1
acml/gcc-int64/mp/fma4/5.3.1
acml/intel/64/5.3.1
...
The output of module avail can be quite long, so you might want to pipe it into a pager like less, or grep the list if you know the name of something you want to search for.
Tip
The module command actually does some manipulation using stdout and therefore actually prints the output of it’s commands onto stderr – this makes using tools like less and grep not work so well. To get around this you can do the following,
$ module avail 2>&1 | less
$ module avail 2>&1 | grep mpi
To see a description of what a module is use,
$ module whatis fenics
fenics : Adds dolfin 1.4.0 to your environment
The FEniCS Project is a collaborative project for the development of
innovative concepts and tools for automated scientific computing, with a
particular focus on automated solution of differential equations by finite
element methods.
... *SNIP*
http://fenicsproject.org/about/components.html#about-components-dolfin
To see what a module actually is doing you can use module show <module name>. Modules are typically not doing much more than prepending/appending things to key environment variables like $PATH, $LD_LIBRARY_PATH and so on.
$ module show fenics
module show fenics
-------------------------------------------------------------------
/cm/shared/modulefiles/fenics/current:
module-whatis Adds dolfin 1.4.0 to your environment
The FEniCS Project is a collaborative project for the development of
.. *SNIP*
http://fenicsproject.org/about/components.html#about-components-dolfin
module load python
module load boost
module load swig
module load cmake
prepend-path PATH /cm/shared/apps/dolfin/1.4.0/bin
prepend-path LD_LIBRARY_PATH /cm/shared/apps/dolfin/1.4.0/lib
prepend-path INCLUDE_PATH /cm/shared/apps/dolfin/1.4.0/include
prepend-path PKG_CONFIG_PATH /cm/shared/apps/dolfin/1.4.0/lib/pkgconfig
prepend-path PYTHONPATH /cm/shared/apps/dolfin/1.4.0/lib/python2.7/site-packages
prepend-path MANPATH /cm/shared/apps/dolfin/1.4.0/share/man
Load/Unload Modules¶
You can see what modules you have loaded with,
$ module list
1) sge/current
Modules can have multiple versions of the software, and you can see the various versions either with module avail or by doing,
$ module apropos cuda
cuda/5.5 : adds cuda to your environment
cuda/6.5 : adds cuda to your environment
You can load a module by doing
# Load the latest version of the module
module load module_name
# Load a specific version of a module
module load module_name/version
To unload a module:
module unload module_name
See man module for more detail on these and the other commands of the modules system.
Installing Software¶
If the software package you need isn’t available under the modules system then try to build it yourself first in your home directory. You can then contact the support team for assistance with doing this, or to request that the software is included in the modules system in the future – however if you have attempted to build it yourself then it may be included a lot faster as you can provide the support team with information you have learn’t when building the package.
So please have a try first!