Modules
1. Basic module commands
Modules are a user-friendly interface that provide for the dynamic modification of the user's environment. By using different modules the user does not need to take care of all the environment variables necessary to use properly and practically compilers, libraries and applications.
Modules on the SISSA/Democritos infrastructure are divided in different categories:
- compilers
- mpi
- libraries
- applications
To see what is available on the resource you're accessing type
$ module avail
and you will be presented with a list of all the modules available on the system that should look like this:
-------------------------------------------------- /opt/Modules/versions --------------------------------------------------- 3.2.6 ----------------------------------------------- /opt/Modules/3.2.6/compilers ----------------------------------------------- gnu/4.2 gnu/4.3(default) intel/10.1(default) intel/11.0 intel/9.1 pgi/7.2-5(default) ----------------------------------------------- /opt/Modules/3.2.6/libraries ----------------------------------------------- acml/4.0.1-intel acml/4.1.0-pgi acml/4.2.0-pgi acml/pgi fftw3/gnu mkl/10.0(default) acml/4.1.0-gnu acml/4.2.0-gnu acml/gnu fftw2/gnu fftw3/intel mkl/10.1 acml/4.1.0-intel acml/4.2.0-intel acml/intel(default) fftw2/intel fftw3/pgi -------------------------------------------------- /opt/Modules/3.2.6/mpi -------------------------------------------------- lam/7.1.4-intel(default) openmpi/1.2.8-intel(default) openmpi/1.2.8-pgi openmpi/1.3/intel/11.0 mvapich2/1.2p1-intel(default) openmpi/1.2.8-intel-11 openmpi/1.3/intel/10.1 openmpi/1.3/intel/9.1 openmpi/1.2.8-gnu openmpi/1.2.8-intel-mm openmpi/1.3/intel/10.1-mm --------------------------------------------- /opt/Modules/3.2.6/applications ---------------------------------------------- cp2k/acml_ser espresso/acml_ser gromacs/3.3.3-sp idl/7.0.3 cp2k/mkl_ser(default) espresso/mkl_ser(default) gromacs/4.0.2-dp namd/2.6(default) cpmd/3.13.2-intel gromacs/3.3.3-dp gromacs/4.0.2-sp(default) namd/2.6-meta
To load a module type the module load command followed by the module name reported by module avail, e.g.:
$ module load intel/9.1
To unload a module simply type the module unload command followed by the module name, e.g.:
$ module unload gnu/4.3
To get some information about a module use the module help command followed by the module name, e.g.:
$ module help fftw3/3.2/intel
To see what modules are currently loaded use the module list command and you should see something like
$ module list Currently Loaded Modulefiles: 1) openmpi/1.2.8-intel 2) intel/10.1
To unload all the loaded modules at once you can use the module purge command. All the modules you have loaded will be automatically unloaded once you log out of the current shell.
Please note that some modules might conflict with each other. If you try to load them at the same time you will get an error message. Moreover, some modules depend on other modules which are loaded automatically.
2. Advanced modules use
2.1 Modules versions
Almost all modules are available in different versions that are marked by a / in the module name. So for example we see from the output of the module avail command that the intel module has three versions
----------------------------------------------- /opt/Modules/3.2.6/compilers ----------------------------------------------- gnu/4.2 gnu/4.3(default) intel/10.1(default) intel/11.0 intel/9.1 pgi/7.2-5(default)
The versions marked as default will be loaded if you don't specify a version, so for example typing
module load intel
will load the Intel compilers version 10.1, while typing
module load intel/9.1
will load Intel compilers version 9.1.
IMPORTANT! If you need to load a module that is not marked as default you must specify the complete module name! If you specify only partially the module version (e.g. openmpi/1.3 instead of openmpi/1.3/intel/10.1) the first module in alphabetical order will be loaded.
2.2 Add your own modules
If you wish to add your own modules you can easily do it by indicating their location with the module use command, e.g. type
$ module use $HOME/my_modules
and all the modules in $HOME/my_modules will be available for you to use. To stop using your own modules you should use the module unuse command in this fashion
$ module unuse $HOME/my_modules
Module files are written in Tcl. To learn how to write your own modules check this page and feel free to take a look at the modules available on the machine you are logged into. To find the where the modules are type
$ echo $MODULEPATH
