Modules
The module system is a program, running on most supercomputers, that simplifies using different software in a precise and controlled manner. Oftentimes a supercomputer has more software installed than the average user will ever use. Frequently there are also multiple version of the same program available at the same time, to enable backward compatibility. A prominent example of this are Compilers, which sometimes have the tendency to break older programs with new versions.
Usage
To get a list of all currently loaded modules, one can employ
$ module list
and might receive something like:
Currently Loaded Modulefiles: 1) DEVELOP 3) intelmpi/2017.4 2) intel/16.0 4) likwid/system-default
detailing that from the DEVELOP group the Intel Compiler ICC in version 16, the Intel implementation of MPI in Version 2017.4 and the system default version of Likwid are currently loaded and usable.
Calling
$ module avail
lists all available (loadable) modules and module groups. With the information of these two commands, one can:
- load a specific module
$ module load x
- unload a specific module
$ module unload x
- switch out a specific module for another one (especially useful to switch between different versions of the same program)
$ module switch x y
If you recurrently need lots of modules, this loading can be automated with an sh-file, so that you just have to execute the file once and it loads all modules, you need.
Using these commands, the module system takes care to set all the system variables, so the desired applications are referenced and called correctly.