Environment Modules: Difference between revisions

From bwHPC Wiki
Jump to navigation Jump to search
No edit summary
 
(19 intermediate revisions by 6 users not shown)
Line 6: Line 6:


= Basic Usage =
= Basic Usage =
== General Documentation on the Modules Environment Software ==

The software documentation on the cluster is available via the commands:
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:


<code>module help</code>
<code>module help</code>


<code>man modules</code>
<code>man module</code>


Online documentation of the project is available on the [https://modules.readthedocs.io/en/latest/index.html Environment Modules Website].
Online documentation of the project is available on the [https://lmod.readthedocs.io/en/latest/ Environment Modules Website].


== Module categories, versions and defaults ==
== Module categories, versions and defaults ==
Line 25: Line 28:
version. The ''Module'' of the default can be addressed by simply omitting the version number:
version. The ''Module'' of the default can be addressed by simply omitting the version number:
category/softwarename
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:
Currently all bwHPC software packages are assigned to the following ''Module'' categories:


<code> bio cae chem compiler devel lib math mpi numlib phys system vis </code>
<!-- -->

<!--
[[:Category:Biology_software|bio]]
[[:Category:Biology_software|bio]]
[[:Category:Engineering_software|cae]]
[[:Category:Engineering_software|cae]]
Line 40: Line 49:
[[:Category:System software|system]]
[[:Category:System software|system]]
[[:Category:Visualization|vis]]
[[:Category:Visualization|vis]]
-->


== Display and search available Modules ==
== Display and search available Modules ==
Line 58: Line 68:
The help message usually contains additional information about the software and points to the software website and documentation.
The help message usually contains additional information about the software and points to the software website and documentation.
<pre>
<pre>
$ module help compiler/gnu/9.2
$ 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.


----------- 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 ...]
[... rest of the output is omitted in the Wiki for clarity ...]
</pre>
</pre>
Line 73: Line 81:
$ module list
$ module list
No Modulefiles Currently Loaded.
No Modulefiles Currently Loaded.
$ module load compiler/gnu/9.2
$ module load system/example/1.0
$ module list
$ module list
Currently Loaded Modulefiles:
Currently Loaded Modulefiles:
1) compiler/gnu/9.2
1) system/example/1.0
</pre>
</pre>




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.
Modules make software available only in your current shell. Whenever you login in, you have to load the software again. Please do not auto-load modules in ~/.bashrc, this can lead to problems with system software or other modules you may load later.


== Software job examples ==
== Software job examples ==
bwHPC provides example job scripts for most installed software modules.
bwHPC provides example job scripts for most installed software modules.


It uses a variable named $SWN_EXA_DIR for a ''Module'' called '''SWN'''. To copy the whole example folder to your $HOME directory, so you can edit those job examples.
For a Software ''Module'' with the sofware called '''SOMESOFTWARE''', you can find the example directory by:
<pre>
$ cd $SOMESOFTWARE_EXA_DIR
</pre>

Copy the whole example folder to your $HOME directory, so you can edit those job examples:


To copy the entire job examples folder of software '''swn''' to your working directory, execute:
<pre>
<pre>
$ cd
$ module load catogory/softwarename
$ mkdir softwarename_examples
$ cp -R $SWN_EXA_DIR ./software-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>
----
[[Category:System software]][[Category:bwUniCluster|Environment Modules]][[Category:ForHLR Phase I|Environment Modules]]


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>
# 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
</pre>
----


= Additional Usage Recommendations =
= Additional Usage Recommendations =
Line 134: Line 169:
<br>
<br>
<pre>
<pre>
$ module show compiler/gnu/9.2
$ module show system/example/1.0
-------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
/opt/bwhpc/common/modulefiles/compiler/gnu/9.2:
/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
]])


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
-------------------------------------------------------------------
</pre>
</pre>


Line 171: 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 ===
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'.
Line 190: Line 226:
$
$
</pre>
</pre>

== Other Module commands ==
== Other Module commands ==
=== module whatis ===
=== module whatis ===
A short description for a specific ''Module'' can be displayed with ''''module whatis category/softwarename/version''''
A short description for a specific ''Module'' can be displayed with ''''module whatis category/softwarename/version''''
<pre>
<pre>
$ module whatis compiler/gnu/9.2
$ module whatis system/example/1.0
system/example/1.0 : A generic module containing a working bwhpc-examples job.
compiler/gnu/9.2 : GNU compiler suite version 9.2.0 (gcc, g++, gfortran, gccgo)
</pre>
</pre>

Latest revision as of 14:57, 8 October 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


Modules make software available only in your current shell. Whenever you login in, you have to load the software again. Please do not auto-load modules in ~/.bashrc, this can lead to problems with system software or 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.