Environment Modules: Difference between revisions
m (→Documentation) |
|||
(45 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
{| width=600px class="wikitable" |
|||
|- |
|||
! Description !! Content |
|||
|- |
|||
| module load |
|||
| category/name | category/name/version (optional) |
|||
|- |
|||
| Availability |
|||
| [[bwUniCluster]] | [[BwForCluster_Chemistry]] | bwGRiD_tu |
|||
|- |
|||
| Links |
|||
| [http://modules.sourceforge.net/ Environment Modules Project] | [http://sourceforge.net/projects/modules/ Environment Modules] |
|||
|- |
|||
| License |
|||
| [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License]] |
|||
|} |
|||
<br> |
|||
= Introduction = |
|||
'''Environment Modules''', or short '''Modules''' are the means by which most of the installed scientific software is provided on the bwHPC clusters. |
|||
<br> |
|||
The use of different compilers, libraries and software packages requires users to set up a specific session environment suited for the program they want to run. The bwHPC clusters provide users with the possibility to load and unload complete environments for compilers, libraries and software packages by a single command. |
|||
<br> |
|||
<br> |
|||
= Description = |
|||
The Environment ''Modules'' package enables dynamic modification of your environment by the |
|||
use of so-called ''modulefiles''. A ''modulefile'' contains information to configure the shell |
|||
for a program/software . Typically, a modulefile contains instructions that alter or set shell |
|||
environment variables, such as PATH and MANPATH, to enable access to various installed |
|||
software. |
|||
<br> |
|||
One of the key features of using the Environment ''Modules'' software is to allow multiple versions of the same software to be used in your environment in a controlled manner. |
|||
For example, two different versions of the Intel C compiler can be installed on the system at the same time - the version used is based upon which Intel C compiler modulefile is loaded. |
|||
<br> |
|||
The software stack of bwHPC clusters provides a number of modulefiles. You can also |
|||
create your own modulefiles. ''Modulefiles'' may be shared by many users on a system, and |
|||
users may have their own collection of modulefiles to supplement or replace the shared |
|||
modulefiles. |
|||
<br> |
|||
A modulefile does not provide configuration of your environment until it is explicitly loaded, |
|||
i.e., the specific modulefile for a software product or application must be loaded in your environment before the configuration information in the modulefile is effective. |
|||
<br> |
|||
For instance loading the default Intel C and Fortran compiler you must execute |
|||
''''module load compiler/intel''''. |
|||
<br> |
|||
<pre> |
|||
$ module load compiler/intel |
|||
$ module list |
|||
Currently Loaded Modulefiles: |
|||
1) compiler/pgi/12.10(default) 2) compiler/intel/15.0(default) |
|||
$ : Display all Intel related environments now |
|||
$ env | grep INTEL |
|||
INTEL_LICENSE_FILE=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/licenses |
|||
INTEL_LIB_MICMPI=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/mpirt/lib/mic |
|||
INTEL_HOME=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187 |
|||
INTEL_VERSION=15.0.3 |
|||
INTEL_MAN_DIR=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/man/en_US |
|||
INTEL_INC_DIR=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/compiler/include |
|||
INTEL_BIN_DIR=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/bin/intel64 |
|||
INTEL_DOC_DIR=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/Documentation/en_US |
|||
INTEL_LIB_DIR=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/compiler/lib/intel64 |
|||
INTEL_LIB_MIC=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/compiler/lib/mic |
|||
INTEL_PYTHONHOME=/opt/bwhpc/common/compiler/intel/compxe.2015.3.187/composer_xe_2015.3.187/debugger/python/intel64 |
|||
</pre> |
|||
<br> |
|||
Software on the bwHPC Clusters is provided as '''Software Environment Modules''', or short '''Modules'''. |
|||
= Usage = |
|||
== Documentation == |
|||
For help on how to use ''Modules'' software, i.e., the command '''module''', |
|||
execute ''''module help''''. |
|||
<pre> |
|||
$ module help |
|||
Modules Release 3.2.10 2012-12-21 (Copyright GNU GPL v2 1991): |
|||
Modules make it possible to have different versions of a software installed at a the same time. |
|||
Usage: module [ switches ] [ subcommand ] [subcommand-args ] |
|||
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. |
|||
= Basic Usage = |
|||
Switches: |
|||
== General Documentation on the Modules Environment Software == |
|||
-H|--help this usage info |
|||
-V|--version modules version & configuration options |
|||
-f|--force force active dependency resolution |
|||
-t|--terse terse format avail and list format |
|||
-l|--long long format avail and list format |
|||
-h|--human readable format avail and list format |
|||
-v|--verbose enable verbose messages |
|||
-s|--silent disable verbose messages |
|||
-c|--create create caches for avail and apropos |
|||
-i|--icase case insensitive |
|||
-u|--userlvl <lvl> set user level to (nov[ice],exp[ert],adv[anced]) |
|||
Available SubCommands and Args: |
|||
+ add|load modulefile [modulefile ...] |
|||
+ rm|unload modulefile [modulefile ...] |
|||
+ switch|swap [modulefile1] modulefile2 |
|||
+ display|show modulefile [modulefile ...] |
|||
+ avail [modulefile [modulefile ...]] |
|||
+ use [-a|--append] dir [dir ...] |
|||
+ unuse dir [dir ...] |
|||
+ update |
|||
+ refresh |
|||
+ purge |
|||
+ list |
|||
+ clear |
|||
+ help [modulefile [modulefile ...]] |
|||
+ whatis [modulefile [modulefile ...]] |
|||
+ apropos|keyword string |
|||
+ initadd modulefile [modulefile ...] |
|||
+ initprepend modulefile [modulefile ...] |
|||
+ initrm modulefile [modulefile ...] |
|||
+ initswitch modulefile1 modulefile2 |
|||
+ initlist |
|||
+ initclear |
|||
</pre> |
|||
or ''''man module''''. |
|||
<pre> |
|||
MODULE(1) Modules package MODULE(1) |
|||
We will provide an overview of the most important commands in the next sections. |
|||
NAME |
|||
module - command interface to the Modules package |
|||
For your reference on what is not covered here, the full documentation written by the software developers is available on the cluster via the commands: |
|||
SYNOPSIS |
|||
module [ switches ] [ sub-command ] [ sub-command-args ] |
|||
<code>module help</code> |
|||
DESCRIPTION |
|||
module is a user interface to the Modules package. The Modules package |
|||
provides for the dynamic modification of the user's environment via |
|||
modulefiles. |
|||
<code>man module</code> |
|||
Each modulefile contains the information needed to configure the shel |
|||
[...] |
|||
</pre> |
|||
For help on particular version of ''Module'', e.g. Intel compiler version X.Y, execute |
|||
''''module help compiler/intel''''. |
|||
<pre> |
|||
$ module help compiler/intel |
|||
----------- Module Specific Help for 'compiler/intel/15.0' -------- |
|||
This module provides the Intel(R) compiler suite version 15.0.3 via |
|||
commands 'icc', 'icpc' and 'ifort' (version 15.0.3), the debugger 'gdb-ia' (version |
|||
7.8.3) as well as the Intel(R) Threading Building Blocks TBB (version 4.3.5) |
|||
and the Integrated Performance Primitives IPP libraries (version 8.2.2) |
|||
(for details see also 'http://software.intel.com/en-us/intel-compilers/'). |
|||
Online documentation of the project is available on the [https://lmod.readthedocs.io/en/latest/ Environment Modules Website]. |
|||
The related Math Kernel Library MKL module is 'numlib/mkl/11.2.3'. |
|||
The related Intel MPI module is 'mpi/impi/5.0.3-intel-15.0'. |
|||
The Intel 'icpc' should work well with GNU compiler version 4.4 to 4.8. |
|||
Before using TBB or IPP setup the corresponding environment, e.g. for 64bit+bash |
|||
source $INTEL_HOME/tbb/bin/tbbvars.sh intel64 |
|||
source $INTEL_HOME/ipp/bin/ippvars.sh intel64 |
|||
== Module categories, versions and defaults == |
|||
Commands: |
|||
The bwHPC clusters categorize ''Modules'', each software can exist in different versions: |
|||
icc # Intel(R) C compiler |
|||
icpc # Intel(R) C++ compiler |
|||
ifort # Intel(R) Fortran compiler |
|||
gdb-ia # Intel version of GNU debugger |
|||
# idb is not available anymore in Intel compiler suite 2015. |
|||
category/softwarename/version |
|||
Local documentation: |
|||
For instance the Intel compiler X.Y belongs to the category of compilers, therefore the |
|||
Man pages: man icc; man icpc; man ifort; man gdb-ia |
|||
modulefile ''X.Y'' is placed under the category ''compiler'' and ''intel''. |
|||
firefox $INTEL_DOC_DIR/beginusing_lc.htm |
|||
<br> |
|||
firefox $INTEL_DOC_DIR/beginusing_lf.htm |
|||
In case of multiple software versions, one version will be always defined as the '''default''' |
|||
The html-pages are very detailed and cover TBB and IPP as well as MKL. |
|||
version. The ''Module'' of the default can be addressed by simply omitting the version number: |
|||
category/softwarename |
|||
e.g. if mathematica is installed, it is in the module |
|||
For some Intel(R) compiler option examples, hints on how to compile 32bit code |
|||
and solutions for less common problems see the tips and troubleshooting doc: |
|||
$INTEL_DOC_DIR/intel-compiler-tips-and-troubleshooting.txt |
|||
math/mathematica |
|||
For details on library and include dirs please call |
|||
module show compiler/intel/15.0 |
|||
Currently all bwHPC software packages are assigned to the following ''Module'' categories: |
|||
The environment variables and commands are available after loading this module. |
|||
In case of problems, please contact 'CompChem (at) bwhpc-c5.de'. |
|||
</pre> |
|||
=== Online Documentation === |
|||
[https://sourceforge.net/p/modules/wiki/FAQ/ Frequently Asked Questions (FAQ)] |
|||
<code> bio cae chem compiler devel lib math mpi numlib phys system vis </code> |
|||
== Display all available Modules == |
|||
Available ''Module'' are modulefiles that can be loaded by the user. A ''Module'' must be loaded before it provides changes to your environment, as described in the introduction to this |
|||
<!-- |
|||
section. You can display all available ''Modules'' on the system by executing: |
|||
[[:Category:Biology_software|bio]] |
|||
[[:Category:Engineering_software|cae]] |
|||
[[:Category:Chemistry_software|chem]] |
|||
[[:Category:Compiler_software|compiler]] |
|||
[[:Category:Debugger_software|devel]] |
|||
[[:Category:Mathematics_software|math]] |
|||
mpi |
|||
[[:Category:Numerical libraries|numlib]] |
|||
[[:Category:Physics software|phys]] |
|||
[[:Category:System software|system]] |
|||
[[:Category:Visualization|vis]] |
|||
--> |
|||
== 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: |
|||
<pre> |
<pre> |
||
$ module avail |
$ module avail |
||
</pre> |
</pre> |
||
The short form the command is: |
|||
You can selectively list software in one of those categories using, e.g. for the category "compiler", or just all versions of a certain module: |
|||
<pre> |
<pre> |
||
$ module |
$ module avail compiler/ |
||
$ module avail compiler/gnu |
|||
</pre> |
</pre> |
||
Available ''Modules'' can be also displayed in different modes, such as |
|||
* each ''Module'' per one line |
|||
<pre> |
|||
$ module -t avail |
|||
</pre> |
|||
* long |
|||
<pre> |
|||
$ module -l avail |
|||
</pre> |
|||
== bwHPC CLuster Information System (CIS) == |
|||
A '''GUI-Version of all available and scheduled modules''' is available with our |
|||
<br> |
|||
'''CIS''' (Cluster Information System). |
|||
<br> |
|||
Software Admins are able to '''announce new modules''', versions and complete new software, too. |
|||
<br> |
|||
Academic users and other interested parties can get a '''summay of all installed modules and module-help informations'''. |
|||
<br> |
|||
<big> |
|||
[https://cis-hpc.uni-konstanz.de CIS: Cluster Information System] |
|||
</big> |
|||
<br><br> |
|||
[[File: cis.jpg]] |
|||
<br> |
|||
== module help == |
|||
== Module categories, versions and defaults == |
|||
A help message for a specific ''Module'' can be displayed with ''''module help category/softwarename/version''''. |
|||
The bwHPC clusters (such as [[bwUniCluster]]) traditionally provide a large variety of |
|||
software and software versions. Therefore ''Module'' are divided in category folders |
|||
containing subfolders of modulefiles again containing modulefile versions, and must be addressed |
|||
as follows: |
|||
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''. |
|||
<br> |
<br> |
||
The help message usually contains additional information about the software and points to the software website and documentation. |
|||
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 |
|||
== Finding software Modules == |
|||
Currently all bwHPC software packages are assigned to the following ''Module'' categories: |
|||
<!-- add wiki category for each of those, possibly just as a link --> |
|||
* [[:Category:Biology_software|bio]] |
|||
* [[:Category:Engineering_software|cae]] |
|||
* [[:Category:Chemistry_software|chem]] |
|||
* [[:Category:Compiler_software|compiler]] |
|||
* [[:Category:Debugger_software|devel]] |
|||
* [[BwHPC_BPG_for_Mathematics|math]] |
|||
* mpi |
|||
* [[:Category:Numerical libraries|numlib]] |
|||
* [[:Category:Physics software|phys]] |
|||
* [[:Category:System software|system]] |
|||
* [[:Category:Visualization|vis]] |
|||
You can selectively list software in one of those categories using, e.g. for the category "compiler" |
|||
<pre> |
<pre> |
||
$ module |
$ module help system/example/1.0 |
||
----------------- Module Specific Help for "system/example/1.0" --------------------------- |
|||
"This module provides a bwhpc-examples job that works on every cluster. |
|||
[... rest of the output is omitted in the Wiki for clarity ...] |
|||
</pre> |
</pre> |
||
Searches are looking for a substring starting at the begin of the name, so this would list all software in categories starting with a "c" |
|||
== Loading Modules and Check they are loaded == |
|||
To load a software ''Module'' and display all loaded modules: |
|||
<pre> |
<pre> |
||
$ module |
$ module list |
||
No Modulefiles Currently Loaded. |
|||
$ module load system/example/1.0 |
|||
$ module list |
|||
Currently Loaded Modulefiles: |
|||
1) system/example/1.0 |
|||
</pre> |
</pre> |
||
while this would find nothing |
|||
Module make software available only in your current shell. Whenever you login in, you have to load the software again. Please don not auto-load modules in .bashrc on login, this can lead to problems with other modules you may load later. |
|||
== Software job examples == |
|||
bwHPC provides example job scripts for most installed software modules. |
|||
For a Software ''Module'' with the sofware called '''SOMESOFTWARE''', you can find the example directory by: |
|||
<pre> |
<pre> |
||
$ cd $SOMESOFTWARE_EXA_DIR |
|||
$ module avail hem |
|||
</pre> |
</pre> |
||
== Loading Modules == |
|||
Copy the whole example folder to your $HOME directory, so you can edit those job examples: |
|||
You can load a ''Module'' software in to your environment to enable easier access to software that |
|||
you want to use by executing: |
|||
<pre> |
<pre> |
||
$ cd |
|||
$ module load category/softwarename/version |
|||
$ mkdir softwarename_examples |
|||
$ echo $SOMESOFTWARE_EXA_DIR |
|||
# Please do not proceed if the command above does not provide any text ! |
|||
# Otherwise you will start to copy all system data (the directory "/"). |
|||
$ cp -r $SOMESOFTWARE_EXA_DIR/ softwarename_examples/ |
|||
</pre> |
</pre> |
||
or |
|||
If your specific software isn't installed, there is a dummy software example module "system/example" present on all clusters. For this module, the process looks like this: |
|||
<pre> |
<pre> |
||
# Load the example module |
|||
$ module add category/softwarename/version |
|||
$ module load system/example/1.0 |
|||
# Run example in a temporary directory |
|||
$ mkdir tmp_example_dir |
|||
$ cp -r $EXAMPLE_EXA_DIR/ softwarename_examples/ |
|||
$ cd tmp_example_dir/bwhpc-examples |
|||
# Example jobscript for clusters using the SLURM batch system |
|||
sbatch examples-1.0.slurm |
|||
# Example jobscript for clusters using PBS |
|||
qsub examples-1.0.pbs |
|||
# Print the results |
|||
cat examples_result.txt |
|||
</pre> |
</pre> |
||
---- |
|||
Loading a ''Module'' in this manner affects ONLY your environment for the current session. |
|||
= Additional Usage Recommendations = |
|||
=== Loading conflicts === |
=== 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: |
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: |
||
Line 283: | Line 161: | ||
| URL of software's Wiki article |
| URL of software's Wiki article |
||
|- |
|- |
||
| and many many more... |
|||
| |
|||
|} |
|} |
||
with SWN being the place holder of the software ''Module'' name. |
with SWN being the place holder of the software ''Module'' name. |
||
<br> |
<br> |
||
All the changes to the current shell session to be invoked by loading the ''Module'' can be reviewed using |
All the changes to the current shell session to be invoked by loading the ''Module'' can be reviewed using ''''module show category/softwarename/version''''. |
||
<br> |
|||
<pre> |
<pre> |
||
$ module show |
$ module show system/example/1.0 |
||
--------------------------------------------------------------------------------------------------- |
|||
/opt/bwhpc/common/modulefiles/Core/system/example/1.0.lua: |
|||
--------------------------------------------------------------------------------------------------- |
|||
whatis("A generic module containing a working bwhpc-examples job.") |
|||
setenv("EXAMPLE_VERSION","1.0") |
|||
setenv("EXAMPLE_HOME","/opt/bwhpc/common/system/example/1.0") |
|||
setenv("EXAMPLE_BIN_DIR","/opt/bwhpc/common/system/example/1.0/bin") |
|||
setenv("EXAMPLE_EXA_DIR","/opt/bwhpc/common/system/example/1.0/bwhpc-examples") |
|||
prepend_path("PATH","/opt/bwhpc/common/system/example/1.0/bin") |
|||
help([["This module provides a bwhpc-examples job that works on every cluster. |
|||
The module is used as example in the bwHPC-Wiki and therefore should be installed on every cluster, |
|||
such that users can try the commands out. |
|||
* The executable of this module can be found in the folder |
|||
$EXAMPLE_BIN_DIR |
|||
Upon loading the module, the binaries are added to PATH. |
|||
* Further documentation for using the example can be found in |
|||
https://wiki.bwhpc.de/e/Environment_Modules |
|||
* Examples are located at: |
|||
$EXAMPLE_EXA_DIR |
|||
]]) |
|||
</pre> |
</pre> |
||
while it does not load the ''Module''. |
|||
=== Modules depending on Modules === |
=== Modules depending on Modules === |
||
Some program ''Modules'' depend on libraries to be loaded to the user environment. Therefore the |
Some program ''Modules'' depend on libraries to be loaded to the user environment. Therefore the |
||
Line 299: | Line 204: | ||
is already loaded (cf. [[#Loading conflicts|Loading conflicts]]). |
is already loaded (cf. [[#Loading conflicts|Loading conflicts]]). |
||
<br> |
<br> |
||
== Unloading Modules == |
== Unloading Modules == |
||
To unload or to remove a software ''Module'' execute: |
To unload or to remove a software ''Module'' execute: |
||
Line 304: | Line 210: | ||
$ module unload category/softwarename/version |
$ module unload category/softwarename/version |
||
</pre> |
</pre> |
||
or |
|||
<pre> |
|||
$ module remove category/softwarename/version |
|||
</pre> |
|||
=== Unloading all loaded modules === |
=== Unloading all loaded modules === |
||
==== Purge ==== |
|||
Unloading a ''Module'' that has been loaded by default makes it inactive for the current session only - it will be reloaded the next time you log in. |
|||
<br> |
|||
In order to remove all previously loaded software modules from your environment issue the command 'module purge'. |
In order to remove all previously loaded software modules from your environment issue the command 'module purge'. |
||
<br> |
<br> |
||
<u>Example</u> |
|||
<pre> |
<pre> |
||
$ |
$ module list |
||
Currently Loaded Modulefiles: |
Currently Loaded Modulefiles: |
||
1) devel/gdb/7.7 |
1) devel/gdb/7.7 |
||
Line 326: | Line 225: | ||
No Modulefiles Currently Loaded. |
No Modulefiles Currently Loaded. |
||
$ |
$ |
||
</pre> |
|||
<font color>Beware!</font> |
|||
<br> |
|||
'module purge' is working without any further inquiry. |
|||
==== Clear ==== |
|||
Use ''''module clear'''' and confirm with "'''y'''" to unload all loaded modules. |
|||
<br> |
|||
<u>Example</u> |
|||
<pre> |
|||
$ module list |
|||
Currently Loaded Modulefiles: |
|||
1) compiler/intel/14.0 |
|||
2) mpi/openmpi/1.8-intel-14.0(default) |
|||
3) devel/gdb/7.7 |
|||
$ |
|||
$ module clear |
|||
Are you sure you want to clear all loaded modules!? [n] y |
|||
$ |
|||
$ module list |
|||
No Modulefiles Currently Loaded. |
|||
</pre> |
</pre> |
||
== |
== Other Module commands == |
||
=== module whatis === |
|||
All ''Modules'' that are currently loaded for you can be displayed by the |
|||
A short description for a specific ''Module'' can be displayed with ''''module whatis category/softwarename/version'''' |
|||
command: |
|||
<pre> |
<pre> |
||
$ module |
$ module whatis system/example/1.0 |
||
system/example/1.0 : A generic module containing a working bwhpc-examples job. |
|||
</pre> |
</pre> |
||
Note: you only have to load further ''Modules'', if you want to use additional software |
|||
packages or to change the version of an already loaded software. |
|||
<br> |
|||
<br> |
|||
= 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. |
|||
<br> |
|||
For copying the entire job examples folder of software '''swn''' to your working directory, execute: |
|||
<pre> |
|||
$ module load catogory/softwarename |
|||
$ cp -R $SWN_EXA_DIR . |
|||
</pre> |
|||
<br> |
|||
= How do Modules work? = |
|||
The default shell on the bwHPC clusters is bash, so explanations and examples will be shown for bash. In general, programs cannot modify the environment of the shell they are being run from, so how can the module command do exactly that? |
|||
<br> |
|||
The module command is not a program, but a bash-function. |
|||
You can view its content using |
|||
<pre> |
|||
$ type module |
|||
</pre> |
|||
and you will get a result like this: |
|||
<pre> |
|||
$ type module |
|||
module is a function |
|||
module () |
|||
{ |
|||
eval `/usr/bin/modulecmd bash $*` |
|||
} |
|||
</pre> |
|||
In this function, modulecmd is called. Its output to stdout is then executed inside your current shell using the bash-internal ''eval'' command. As a consequence, all output that you see from the module is transmitted via stderr (output handle 2) or in some cases even stdin (output handle 0). |
|||
<br> |
|||
<br> |
|||
---- |
|||
[[Category:System software]][[Category:bwUniCluster|Environment Modules]][[Category:ForHLR Phase I|Environment Modules]] |
Revision as of 10:24, 25 March 2024
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.
Basic Usage
General Documentation on the Modules Environment Software
We will provide an overview of the most important commands in the next sections.
For your reference on what is not covered here, the full documentation written by the software developers is available on the cluster via the commands:
module help
man module
Online documentation of the project is available on the Environment Modules Website.
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
e.g. if mathematica is installed, it is in the module
math/mathematica
Currently all bwHPC software packages are assigned to the following Module categories:
bio cae chem compiler devel lib math mpi numlib phys system vis
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", or just all versions of a certain module:
$ module avail compiler/ $ module avail compiler/gnu
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 system/example/1.0 ----------------- Module Specific Help for "system/example/1.0" --------------------------- "This module provides a bwhpc-examples job that works on every cluster. [... rest of the output is omitted in the Wiki for clarity ...]
Loading Modules and Check they are loaded
To load a software Module and display all loaded modules:
$ module list No Modulefiles Currently Loaded. $ module load system/example/1.0 $ module list Currently Loaded Modulefiles: 1) system/example/1.0
Module make software available only in your current shell. Whenever you login in, you have to load the software again. Please don not auto-load modules in .bashrc on login, this can lead to problems with other modules you may load later.
Software job examples
bwHPC provides example job scripts for most installed software modules.
For a Software Module with the sofware called SOMESOFTWARE, you can find the example directory by:
$ cd $SOMESOFTWARE_EXA_DIR
Copy the whole example folder to your $HOME directory, so you can edit those job examples:
$ cd $ mkdir softwarename_examples $ echo $SOMESOFTWARE_EXA_DIR # Please do not proceed if the command above does not provide any text ! # Otherwise you will start to copy all system data (the directory "/"). $ cp -r $SOMESOFTWARE_EXA_DIR/ softwarename_examples/
If your specific software isn't installed, there is a dummy software example module "system/example" present on all clusters. For this module, the process looks like this:
# Load the example module $ module load system/example/1.0 # Run example in a temporary directory $ mkdir tmp_example_dir $ cp -r $EXAMPLE_EXA_DIR/ softwarename_examples/ $ cd tmp_example_dir/bwhpc-examples # Example jobscript for clusters using the SLURM batch system sbatch examples-1.0.slurm # Example jobscript for clusters using PBS qsub examples-1.0.pbs # Print the results cat examples_result.txt
Additional Usage Recommendations
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 system/example/1.0 --------------------------------------------------------------------------------------------------- /opt/bwhpc/common/modulefiles/Core/system/example/1.0.lua: --------------------------------------------------------------------------------------------------- whatis("A generic module containing a working bwhpc-examples job.") setenv("EXAMPLE_VERSION","1.0") setenv("EXAMPLE_HOME","/opt/bwhpc/common/system/example/1.0") setenv("EXAMPLE_BIN_DIR","/opt/bwhpc/common/system/example/1.0/bin") setenv("EXAMPLE_EXA_DIR","/opt/bwhpc/common/system/example/1.0/bwhpc-examples") prepend_path("PATH","/opt/bwhpc/common/system/example/1.0/bin") help([["This module provides a bwhpc-examples job that works on every cluster. The module is used as example in the bwHPC-Wiki and therefore should be installed on every cluster, such that users can try the commands out. * The executable of this module can be found in the folder $EXAMPLE_BIN_DIR Upon loading the module, the binaries are added to PATH. * Further documentation for using the example can be found in https://wiki.bwhpc.de/e/Environment_Modules * Examples are located at: $EXAMPLE_EXA_DIR ]])
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).
Unloading Modules
To unload or to remove a software Module execute:
$ module unload 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 system/example/1.0 system/example/1.0 : A generic module containing a working bwhpc-examples job.