Environment Modules: Difference between revisions
K Siegmund (talk | contribs) |
K Siegmund (talk | contribs) |
||
Line 42: | Line 42: | ||
Available ''Modules'' are modulefiles that can be loaded by the user. A ''Module'' must be loaded before it provides changes to your environment. You can display all available ''Modules'' on the system by executing: |
Available ''Modules'' are modulefiles that can be loaded by the user. A ''Module'' must be loaded before it provides changes to your environment. You can display all available ''Modules'' on the system by executing: |
||
<pre> |
<pre> |
||
$ module |
$ module avail |
||
</pre> |
|||
The short form the command is: |
|||
<pre> |
|||
$ module av |
|||
</pre> |
</pre> |
||
Revision as of 11:56, 23 November 2021
Software on the bwHPC Clusters is provided as Software Environment Modules, or short Modules.
Modules make it possible to have different versions of a software installed at a the same time. The complete environments for the software package, compilers and libraries and needed by this specific version is then loaded by a single command. This happens usually in the beginning of the jobscript.
Documentation
For an extensive help on how to use Environment Modules, i.e., the command module, execute 'module help' or use 'man modules' to show manpage for the manual command.
An extensive online documentation is available on the Environment Modules Website.
Usage
Module categories, versions and defaults
The bwHPC clusters categorize Modules, each software can exist in different versions:
category/softwarename/version
For instance the Intel compiler X.Y belongs to the category of compilers, therefore the
modulefile X.Y is placed under the category compiler and intel.
In case of multiple software versions, one version will be always defined as the default
version. The Module of the default can be addressed by simply omitting the version number:
category/softwarename
Currently all bwHPC software packages are assigned to the following Module categories:
Display and search available Modules
Available Modules are modulefiles that can be loaded by the user. A Module must be loaded before it provides changes to your environment. You can display all available Modules on the system by executing:
$ module avail
You can selectively list software in one of those categories using, e.g. for the category "compiler"
$ module avail compiler/
This would list all available versions of the GCC compiler suite
$ module avail compiler/gnu
Loading Modules
You can load a Module software in to your environment to enable easier access to software that you want to use by executing:
$ module load category/softwarename/version
or
$ module add category/softwarename/version
Loading a Module in this manner affects ONLY your environment for the current session.
Loading conflicts
By default you can not load different versions of same software Module in same session. Loading for example Intel compiler version X while Intel compiler version Y is loaded results in error message as follows:
Module 'compiler/intel/X' conflicts with the currently loaded module(s) 'compiler/intel/Y'
The solution is unloading or switching Modules.
Showing the changes introduced by a Module
Loading a Module will change the environment of the current shell session. For instance the $PATH variable will be expanded by the software's binary directory. Other Module variables may even change the behavior of the current shell session or the software program(s) in a more drastic way.
Loaded Modules may also invoke an additional set of environment variables, which e.g. point to directories or destinations of documentation and examples. Their nomenclature is systematic:
Variable | Pointing to |
---|---|
$SWN_HOME | Root directory of the software package |
$SWN_DOC_DIR | Documentation |
$SWN_EXA_DIR | Examples |
$SWN_BPR_URL | URL of software's Wiki article |
and many many more... |
with SWN being the place holder of the software Module name.
All the changes to the current shell session to be invoked by loading the Module can be reviewed using 'module show category/softwarename/version'.
$ module show compiler/gnu/9.2 ------------------------------------------------------------------- /opt/bwhpc/common/modulefiles/compiler/gnu/9.2: setenv GNU_VERSION 9.2.0 setenv GNU_HOME /opt/bwhpc/common/compiler/gnu/9.2.0 setenv GNU_BIN_DIR /opt/bwhpc/common/compiler/gnu/9.2.0/bin setenv GNU_MAN_DIR /opt/bwhpc/common/compiler/gnu/9.2.0/man setenv GNU_LIB_DIR /opt/bwhpc/common/compiler/gnu/9.2.0/lib64 setenv GNU_LIB_DIR2 /opt/bwhpc/common/compiler/gnu/9.2.0/lib prepend-path PATH /opt/bwhpc/common/compiler/gnu/9.2.0/bin prepend-path MANPATH /opt/bwhpc/common/compiler/gnu/9.2.0/man prepend-path LD_LIBRARY_PATH /opt/bwhpc/common/compiler/gnu/9.2.0/lib64:/opt/bwhpc/common/compiler/gnu/9.2.0/lib setenv CC gcc setenv CXX g++ setenv F77 gfortran setenv FC gfortran setenv F90 gfortran module-whatis GNU compiler suite version 9.2.0 (gcc, g++, gfortran, gccgo) conflict compiler/gnu -------------------------------------------------------------------
Modules depending on Modules
Some program Modules depend on libraries to be loaded to the user environment. Therefore the
corresponding Modules of the software must be loaded together with the Modules of
the libraries.
By default such software Modules try to load required Modules and corresponding versions automatically. However, automatic loading might fail if a different version of that required Module
is already loaded (cf. Loading conflicts).
Display your loaded Modules
All Modules that are currently loaded for you can be displayed by the command 'module list'.
$ module list No Modulefiles Currently Loaded. $ module load compiler/gnu/9.2 $ module list Currently Loaded Modulefiles: 1) compiler/gnu/9.2
Unloading Modules
To unload or to remove a software Module execute:
$ module unload category/softwarename/version
or
$ module remove category/softwarename/version
Unloading all loaded modules
In order to remove all previously loaded software modules from your environment issue the command 'module purge'.
$ module list Currently Loaded Modulefiles: 1) devel/gdb/7.7 2) compiler/intel/14.0 3) mpi/openmpi/1.8-intel-14.0(default) $ $ module purge $ module list No Modulefiles Currently Loaded. $
Other Module commands
module whatis
A short description for a specific Module can be displayed with 'module whatis category/softwarename/version'
$ module whatis compiler/gnu/9.2 compiler/gnu/9.2 : GNU compiler suite version 9.2.0 (gcc, g++, gfortran, gccgo)
module help
A help message for a specific Module can be displayed with 'module help category/softwarename/version'.
The help message usually contains additional information about the software and points to the software website and documentation.
$ module help compiler/gnu/9.2 ----------- Module Specific Help for 'compiler/gnu/9.2' ----------- This module provides the GNU compiler collection version 9.2.0 via commands [... rest of the output is omitted in the Wiki for clarity ...]
Software job examples
The Modules installed on bwHPC systems provide job examples to help you get started using the software or submitting jobs with this software. Examples can be found via a convenient
variable $SWN_EXA_DIR (for a Module called SWN). It is advisable to copy the whole example folder to your $HOME directory, so you can edit those job examples.
For copying the entire job examples folder of software swn to your working directory, execute:
$ module load catogory/softwarename $ cp -R $SWN_EXA_DIR .