Application modules
Metacentrum wiki is deprecated after March 2023
Dear users, due to integration of Metacentrum into https://www.e-infra.cz/en (e-INFRA CZ service), the documentation for users will change format and site. The current wiki pages won't be updated after end of March 2023. They will, however, be kept for a few months for backwards reference. The new documentation resides at https://docs.metacentrum.cz. |
Modulefiles update
Dear users, the modules system was just updated thorough the Metacentrum infrastructure. This documentation is valid for the current version. To check out the documentation for old version, see page Application_modules_old. |
Backward compatibility
The new modules are backwards compatible, i.e. all your old scripts should within the new version. If you, however, observe strange behaviour of your old scripts, let us know at meta@cesnet.cz. |
Usage
Search for module
List core names of available modules
$ module ava # list all available modules (but not their versions)
# the list is very long; move down the list by pressing Space or Enter key
$ module ava intel # list all available modules starting with "intel":
---------------------------------------- /packages/run/modules-5/debian11avx512 ----------------------------------------
intel-oneapi-compilers/ intel-oneapi-tbb/ intel-tbb/ intelmpi/
intel-oneapi-mkl/ intel-parallel-studio/ intelcdk/
List available versions of a specific module
$ module avail intelcdk/ # list the modules within the intelcdk/ directory (the "/" is important!)
will get list of versions:
intelcdk/12 intelcdk/14 intelcdk/16 intelcdk/17.1 intelcdk/19u3
intelcdk/13 intelcdk/15 intelcdk/17 intelcdk/17.1-cvmfs
Search is case-insensitive!
(BULLSEYE)melounova@skirit:~$ module avail Intel
---------------------------------------- /packages/run/modules-5/debian11avx512 ----------------------------------------
intel-oneapi-compilers/ intel-oneapi-tbb/ intel-tbb/ intelmpi/
intel-oneapi-mkl/ intel-parallel-studio/ intelcdk/
Some listing options
$ module avail intelcdk --indepth # list all the modules within the intelcdk directory
$ module avail intelcdk -a # similar to above, plus list aliases to modules
Load module
Load a default version of a module
$ module load intelcdk # or
$ module load intelcdk --default # load default version of intelcdk (usually the newest); there is always one
# use this option if you have no specific reason to do otherwise
# or if you are insecure which version to choose, start by default one
$ module add intelcdk # equivalent to the above
Load a specific version of a module
$ module load intelcdk-17.1
List currently loaded modules
$ module list
Currently Loaded Modulefiles:
1) intelcdk/17.1
Unload module(s)
Unload a module:
$ module unload matlab-9.9 # unload matlab-9.9, for example
$ module del matlab-9.9 # equivalent to the above
Clear all currently loaded modules:
$ module purge # get rid of everything!
Get details of a module
Display information about the module:
$ module display intelcdk-17.1 # get loads of info about the module and environment
Some important variables are
- PATH - path to the executable
- LD_LIBRARY_PATH - path to libraries for linker
- LIBRARY_PATH - path to libraries
Specific usecases
Limit the module validity to a bash subshell
Within a single session you can use modules separately by enclosing them to parentheses. Parentheses, in general, create a subshell in bash, i.e. all modules loaded within a certain subshell will be unloaded automatically after the subshell exits.
Example: normally the following two modules will conflict if loaded within the same session:
(BUSTER)melounova@skirit:~$ module add python/3.8.0-gcc This is the user wrapper module using spack module python/3.8.0-gcc-rab6t. (BUSTER)melounova@skirit:~$ module add python/3.8.0-gcc-rab6t python/3.8.0-gcc-rab6t(49):ERROR:150: Module 'python/3.8.0-gcc-rab6t' conflicts with the currently loaded module(s) 'python/3.8.0-gcc' python/3.8.0-gcc-rab6t(49):ERROR:102: Tcl command execution failed: conflict python
However you can load them separately in subshells:
(BUSTER)melounova@skirit:~$ (module add python/3.8.0-gcc; python) This is the user wrapper module using spack module python/3.8.0-gcc-rab6t. ... >>> quit() (BUSTER)melounova@skirit:~$ (module add python/3.8.0-gcc-rab6t; python) ... >>> quit()
Modulefiles
A modulefile is a text file that collects paths to the binary, paths to external libraries and possible dependencies on other modules.
The modulefiles reside in some of the directories included in variable MODULEPATH (echo $MODULEPATH
).
For many applications, there are several modules available. This means there are several copies of the software available, differing in version, compiler and other features. For example,
$ module avail tensorflow/ tensorflow/1.3.0-cpu tensorflow/1.3.0-gpu-python3 tensorflow/1.5.0-gpu tensorflow/1.13.1-gpu-python3 tensorflow/1.3.0-cpu-python3 tensorflow/1.4.1-gpu tensorflow/1.7.1-cpu-python3 tensorflow/2.0.0-gpu-python3 tensorflow/1.3.0-gpu tensorflow/1.5.0-cpu-python3 tensorflow/1.7.1-gpu-python3
says there are 11 versions of TensorFlow software differing by version, Python version (2 or 3) and whether it can be used for GPU computing (gpu) or not (cpu).