Difference between revisions of "BwUniCluster2.0/Software Modules"

From bwHPC Wiki
Jump to: navigation, search
 
(21 intermediate revisions by 4 users not shown)
Line 2: Line 2:
 
<br>
 
<br>
 
= Introduction =
 
= Introduction =
'''Environment Modules''', or short '''Modules''' are the means by which most of the installed scientific software is provided on bwUniCluster 2.0.
+
'''Software (Environment) Modules''', or short '''Modules''' are the means by which most of the installed scientific software is provided on bwUniCluster 2.0.
 
<br>
 
<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. bwUniCluster 2.0 provides users with the possibility to load and unload complete environments for compilers, libraries and software packages by a single command.
 
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. bwUniCluster 2.0 provides users with the possibility to load and unload complete environments for compilers, libraries and software packages by a single command.
Line 18: Line 18:
 
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.
 
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>
 
<br>
The software stack of ForHLR clusters provides a number of modulefiles. You can also
+
The software stack of bwUniCluster 2.0 provides a number of modulefiles. You can also
 
create your own modulefiles. ''Modulefiles'' may be shared by many users on a system, and
 
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
 
users may have their own collection of modulefiles to supplement or replace the shared
Line 31: Line 31:
 
<pre>
 
<pre>
 
$ module list
 
$ module list
Currently Loaded Modulefiles:
+
Currently Loaded Modules:
1) dot 2) compiler/intel/16.0 3) numlib/mkl/11.3 4) mpi/openmpi/1.10.2
+
1) compiler/intel/19.1 2) mpi/impi/2019 3) numlib/mkl/2019
 
</pre>
 
</pre>
 
<br>
 
<br>
   
 
= Usage =
 
= Usage =
On ForHLR I and ForHLR II Lmod: A New Environment Module System from http://lmod.readthedocs.org/en/latest/ is installed.
+
Lmod on bwUniCluster 2.0: A New Environment Module System from http://lmod.readthedocs.org/en/latest/ is installed.
 
== Documentation ==
 
== Documentation ==
 
Execute ''''module help'''' or ''''man module'''' for help on how to use ''Modules'' software.
 
Execute ''''module help'''' or ''''man module'''' for help on how to use ''Modules'' software.
Line 47: Line 47:
 
-h -? -H --help This help message
 
-h -? -H --help This help message
 
-s availStyle --style=availStyle Site controlled avail style: system (default: system)
 
-s availStyle --style=availStyle Site controlled avail style: system (default: system)
  +
--regression_testing Lmod regression testing
 
-D Program tracing written to stderr
 
-D Program tracing written to stderr
--debug=dbglvl Program tracing written to stderr
+
--debug=dbglvl Program tracing written to stderr (where dbglvl is a number 1,2,3)
 
--pin_versions=pinVersions When doing a restore use specified version, do not follow defaults
 
--pin_versions=pinVersions When doing a restore use specified version, do not follow defaults
 
-d --default List default modules only when used with avail
 
-d --default List default modules only when used with avail
 
-q --quiet Do not print out warnings
 
-q --quiet Do not print out warnings
--topic=topic help topics: modfuncs envvars
 
 
--expert Expert mode
 
--expert Expert mode
 
-t --terse Write out in machine readable format for commands: list, avail, spider, savelist
 
-t --terse Write out in machine readable format for commands: list, avail, spider, savelist
Line 65: Line 65:
 
--gitversion Dump git version in a machine readable way and quit
 
--gitversion Dump git version in a machine readable way and quit
 
--dumpversion Dump version in a machine readable way and quit
 
--dumpversion Dump version in a machine readable way and quit
--localvar=localvarA local variables needed to be set after this commands execution
 
 
--check_syntax --checkSyntax Checking module command syntax: do not load
 
--check_syntax --checkSyntax Checking module command syntax: do not load
 
--config Report Lmod Configuration
 
--config Report Lmod Configuration
  +
--config_json Report Lmod Configuration in json format
 
--mt Report Module Table State
 
--mt Report Module Table State
 
--timer report run times
 
--timer report run times
Line 75: Line 75:
 
--show_hidden Avail and spider will report hidden modules
 
--show_hidden Avail and spider will report hidden modules
 
--spider_timeout=timeout a timeout for spider
 
--spider_timeout=timeout a timeout for spider
  +
-T --trace
   
 
module [options] sub-command [args ...]
 
module [options] sub-command [args ...]
Line 110: Line 111:
 
All searching (spider, list, avail, keyword) support regular expressions:
 
All searching (spider, list, avail, keyword) support regular expressions:
   
  +
spider -r '^p' Finds all the modules that start with `p' or `P'
 
spider -r mpi Finds all modules that have "mpi" in their name.
+
-r spider '^p' Finds all the modules that start with `p' or `P'
spider -r 'mpi$ Finds all modules that end with "mpi" in their name.
+
-r spider mpi Finds all modules that have "mpi" in their name.
  +
-r spider 'mpi$ Finds all modules that end with "mpi" in their name.
   
 
Handling a collection of modules:
 
Handling a collection of modules:
Line 124: Line 126:
 
savelist List of saved collections.
 
savelist List of saved collections.
 
describe | mcc name Describe the contents of a module collection.
 
describe | mcc name Describe the contents of a module collection.
  +
disable name Disable (i.e. remove) a collection.
   
 
Deprecated commands:
 
Deprecated commands:
Line 134: Line 137:
 
Miscellaneous sub-commands:
 
Miscellaneous sub-commands:
 
---------------------------
 
---------------------------
  +
is-loaded modulefile return a true status if module is loaded
  +
is-avail modulefile return a true status if module can be loaded
 
show modulefile show the commands in the module file.
 
show modulefile show the commands in the module file.
 
use [-a] path Prepend or Append path to MODULEPATH.
 
use [-a] path Prepend or Append path to MODULEPATH.
Line 143: Line 148:
 
LMOD_COLORIZE If defined to be "YES" then Lmod prints properties and warning in color.
 
LMOD_COLORIZE If defined to be "YES" then Lmod prints properties and warning in color.
   
------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  +
Lmod Web Sites
The following guides are at http://lmod.readthedocs.org/
 
   
  +
Documentation: http://lmod.readthedocs.org
User Guide - How to use.
 
  +
Github: https://github.com/TACC/Lmod
Advance User Guide - How to create you own modules.
 
  +
Sourceforge: https://lmod.sf.net
System Administrator Guide - How to install Lmod on your own system.
 
  +
TACC Homepage: https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
------------------------------------------------------------------------------------------------------------------
 
   
  +
To report a bug please read http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
Modules based on Lua: Version 6.1.3 2016-02-11 06:02
 
  +
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  +
  +
Modules based on Lua: Version 8.2 (8.2-1-g9c98036c) 2019-10-30 11:17 -05:00
 
by Robert McLay mclay@tacc.utexas.edu
 
by Robert McLay mclay@tacc.utexas.edu
  +
   
 
</pre>
 
</pre>
Line 159: Line 168:
 
<pre>
 
<pre>
 
$ module help compiler/intel
 
$ module help compiler/intel
----------- Module Specific Help for 'compiler/intel/15.0.2' ---------------------------
+
---------------------- Module Specific Help for "compiler/intel/19.1" ----------------------
  +
Intel(R) Compilers 19.1 for Linux*
 
  +
For details see: https://software.intel.com/en-us/intel-compilers
Sets up intel C/C++ and Fortran compiler version 15.0.2 (Intel(R) C++ Compiler XE 15.0 for Linux)
 
  +
In case of problems, please contact: Hartmut Häfner <hartmut.haefner@kit.edu>
  +
SCC support end: 2022-12-31
 
</pre>
 
</pre>
 
<br>
 
<br>
Line 170: Line 181:
   
 
== Display all available Modules ==
 
== 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
+
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:
section. You can display all available ''Modules'' on the system by executing:
 
 
<pre>
 
<pre>
 
$ module avail
 
$ module avail
Line 189: Line 199:
   
 
== Module categories, versions and defaults ==
 
== Module categories, versions and defaults ==
The ForHLR clusters 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:
+
The bwHPC clusters 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
 
category/softwarename/version
 
For instance all versions of the Intel compiler belong to the category of compilers, thus the corresponding modulefiles are placed under the category ''compiler'' and ''intel''.
 
For instance all versions of the Intel compiler belong to the category of compilers, thus the corresponding modulefiles are placed under the category ''compiler'' and ''intel''.
Line 199: Line 209:
   
 
== Finding software Modules ==
 
== Finding software Modules ==
Currently all ForHLR software packages are assigned to the following ''Module'' categories:
+
Currently all bwUniCluster 2.0 software packages are assigned to the following ''Module'' categories (???):
 
<!-- add wiki category for each of those, possibly just as a link -->
 
<!-- add wiki category for each of those, possibly just as a link -->
 
<!--* [[:Category:Biology_software|bio]]-->
 
<!--* [[:Category:Biology_software|bio]]-->
Line 211: Line 221:
 
<!--* [[:Category:Debugger_software|devel]]-->
 
<!--* [[:Category:Debugger_software|devel]]-->
 
* devel
 
* devel
  +
<!--* [[:Category:Libraries|lib]]-->
  +
* lib
 
<!--* [[BwHPC_BPG_for_Mathematics|math]]-->
 
<!--* [[BwHPC_BPG_for_Mathematics|math]]-->
 
* math
 
* math
Line 220: Line 232:
 
<!--* [[:Category:System software|system]]-->
 
<!--* [[:Category:System software|system]]-->
 
* system
 
* system
  +
<!--* [[:Category:Toolkit|toolkit]]-->
  +
* toolkit
 
<!--* [[:Category:Visualization|vis]]-->
 
<!--* [[:Category:Visualization|vis]]-->
 
* vis
 
* vis
Line 266: Line 280:
 
<pre>
 
<pre>
 
$ module show compiler/intel
 
$ module show compiler/intel
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/software/all/lmod/modulefiles/Core/compiler/intel/18.0.lua:
+
/opt/bwhpc/common/modulefiles/Core/compiler/intel/19.1.lua:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
setenv("INTEL_LICENSE_FILE","28518@scclic1.scc.kit.edu")
 
setenv("INTEL_LICENSE_FILE","28518@scclic1.scc.kit.edu")
setenv("AR","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64/xiar")
+
setenv("AR","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/xiar")
setenv("CC","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64/icc")
+
setenv("CC","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/icc")
setenv("CXX","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64/icpc")
+
setenv("CXX","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/icpc")
setenv("F77","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64/ifort")
+
setenv("F77","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/ifort")
setenv("FC","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64/ifort")
+
setenv("FC","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/ifort")
setenv("CFLAGS","-O2 -ipo -xHost")
+
setenv("CFLAGS","-O2 -xCORE-AVX2")
setenv("CXXFLAGS","-O2 -ipo -xHost")
+
setenv("CXXFLAGS","-O2 -xCORE-AVX2")
setenv("FFLAGS","-O2 -ipo -xHost")
+
setenv("FFLAGS","-O2 -xCORE-AVX2")
setenv("FCFLAGS","-O2 -ipo -xHost")
+
setenv("FCFLAGS","-O2 -xCORE-AVX2")
  +
setenv("INTEL_VERSION","19.1.0.166")
  +
setenv("INTEL_HOME","/opt/intel/compilers_and_libraries_2020/linux")
  +
setenv("INTEL_BIN_DIR","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64")
  +
setenv("INTEL_LIB_DIR","/opt/intel/compilers_and_libraries_2020/linux/lib/intel64")
  +
setenv("INTEL_INC_DIR","/opt/intel/compilers_and_libraries_2020/linux/include")
  +
setenv("INTEL_MAN_DIR","/opt/intel/compilers_and_libraries_2020/linux/man/common")
  +
setenv("INTEL_DOC_DIR","/opt/intel/compilers_and_libraries_2020/linux/documentation/en")
  +
setenv("GDB_VERSION","19.1.0.166")
  +
setenv("GDB_HOME","/opt/intel/debugger_2020/gdb/intel64")
  +
setenv("GDB_BIN_DIR","/opt/intel/debugger_2020/gdb/intel64/bin")
  +
setenv("GDB_LIB_DIR","/opt/intel/debugger_2020/libipt/intel64/lib")
  +
setenv("GDB_INC_DIR","/opt/intel/debugger_2020/gdb/intel64/include")
  +
setenv("GDB_INF_DIR","/opt/intel/documentation_2020/en/debugger/gdb-ia/info")
  +
setenv("GDB_MAN_DIR","/opt/intel/documentation_2020/en/debugger/gdb-ia/man")
 
setenv("KMP_AFFINITY","noverbose,granularity=core,respect,warnings,compact,1")
 
setenv("KMP_AFFINITY","noverbose,granularity=core,respect,warnings,compact,1")
prepend_path("PATH","/opt/intel/compilers_and_libraries_2018/linux/bin/intel64")
+
prepend_path("PATH","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64")
prepend_path("MANPATH","/opt/intel/compilers_and_libraries_2018/linux/man/common")
+
prepend_path("MANPATH","/opt/intel/compilers_and_libraries_2020/linux/man/common")
prepend_path("LD_LIBRARY_PATH","/opt/intel/compilers_and_libraries_2018/linux/lib/intel64")
+
prepend_path("LD_LIBRARY_PATH","/opt/intel/compilers_and_libraries_2020/linux/lib/intel64")
whatis("Sets up Intel C/C++ and Fortran compiler version 18.0 (Intel(R) Compilers 18.0 Update 3 for Linux*) - supported by SCC till 2020-12-31!")
+
whatis("Sets up Intel C/C++ and Fortran compiler version 19.1 (Intel(R) Compilers 19.1 for Linux*) - supported by SCC till 2022-12-31!")
help([[Intel(R) Compilers 18.0 Update 3 for Linux*
+
help([[Intel(R) Compilers 19.1 for Linux*
 
For details see: https://software.intel.com/en-us/intel-compilers
 
For details see: https://software.intel.com/en-us/intel-compilers
In case of problems, please contact: [...]
+
In case of problems, please contact: Hartmut Häfner <hartmut.haefner@kit.edu>
SCC support end: 2020-12-31]])
+
SCC support end: 2022-12-31]])
prepend_path("MODULEPATH","/software/all/lmod/modulefiles/Compiler/intel/18.0")
+
prepend_path("MODULEPATH","/software/bwhpc/common/modulefiles/Compiler/intel/19.1")
 
family("compiler")
 
family("compiler")
 
</pre>
 
</pre>
<font color=red>'module show' does '''not''' load the ''Module''!</font>
 
 
<br>
 
<br>
 
<br>
 
<br>
Line 315: Line 342:
 
</pre>
 
</pre>
 
<br>
 
<br>
  +
 
=== Unloading all loaded modules ===
 
=== Unloading all loaded modules ===
 
==== Purge ====
 
==== Purge ====
Line 325: Line 353:
 
$ module list
 
$ module list
 
Currently Loaded Modules:
 
Currently Loaded Modules:
1) dot 2) compiler/intel/16.0 3) numlib/mkl/11.3 4) mpi/openmpi/1.10.2
+
1) compiler/intel/19.1 2) mpi/impi/2019 3) numlib/mkl/2019
 
$
 
$
 
$ module purge
 
$ module purge
Line 352: Line 380:
 
$ module spider
 
$ module spider
   
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The following is a list of the modules currently available:
+
The following is a list of the modules and extensions currently available:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cae/openfoam: cae/openfoam/5.x.intel_17.0.impi_2017, cae/openfoam/5.0
+
cae/abaqus: cae/abaqus/2018, cae/abaqus/2019
   
  +
cae/adina: cae/adina/9.1.2
compiler/clang: compiler/clang/5.0, compiler/clang/6.0, compiler/clang/7.0
 
   
  +
cae/ansys: cae/ansys/19.2, cae/ansys/2019R3, cae/ansys/2020R1
compiler/gnu: compiler/gnu/4.8, compiler/gnu/4.8.5, compiler/gnu/5, compiler/gnu/6, compiler/gnu/7, compiler/gnu/8
 
   
  +
cae/comsol: cae/comsol/5.4, cae/comsol/5.5
compiler/intel: compiler/intel/16.0, compiler/intel/17.0, compiler/intel/18.0, compiler/intel/19.0
 
   
devel/APS: devel/APS/2018
+
cae/cst: cae/cst/2018
   
  +
cae/lsdyna: cae/lsdyna/901
devel/binutils: devel/binutils/2.31.1
 
   
  +
cae/openfoam: cae/openfoam/v1912, cae/openfoam/2.4.x, cae/openfoam/6, cae/openfoam/7
devel/cmake: devel/cmake/2.8, devel/cmake/3.6, devel/cmake/3.7, devel/cmake/3.9, devel/cmake/3.11, devel/cmake/3.12, devel/cmake/3.13
 
   
devel/cube: devel/cube/4.4
+
cae/paraview: cae/paraview/5.8
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
</pre>
 
''''module spider modulename'''' : You can search using a modulename. The search lists all possible versions of that module.
 
<pre>
 
$ module spider gnu
 
   
  +
cae/starccm+: cae/starccm+/14.02.010, cae/starccm+/2019.2.1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
compiler/gnu:
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Versions:
 
compiler/gnu/4.8
 
compiler/gnu/4.8.5
 
compiler/gnu/5
 
compiler/gnu/6
 
compiler/gnu/7
 
compiler/gnu/8
 
   
  +
cae/starcd: cae/starcd/4.28
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
</pre>
 
''''module spider string'''' : You can search using a string. The search lists all modules which contain "string"
 
<pre>
 
$ module spider net
 
   
  +
compiler/clang: compiler/clang/9.0
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
devel/netbeans: devel/netbeans/8.2
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
   
  +
compiler/gnu: compiler/gnu/9.2
This module can be loaded directly: module load devel/netbeans/8.2
 
   
  +
compiler/intel: compiler/intel/18.0, compiler/intel/19.0, compiler/intel/19.1
Help:
 
The NetBeans IDE is a world-class development environment written in
 
Java. It can be used to develop code in Java, HTML, XML, JSP, C/C++,
 
and other languages. The IDE is modular and there is a huge variety of
 
commercial and free extensions for it that support various
 
technologies.
 
 
   
  +
compiler/pgi: compiler/pgi/2019
   
  +
devel/cmake: devel/cmake/3.16
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
lib/netcdf:
 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Versions:
 
lib/netcdf/4.6
 
   
  +
devel/cuda: devel/cuda/9.2, devel/cuda/10.0, devel/cuda/10.2
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
  +
  +
devel/gdb: devel/gdb/9.1
  +
  +
devel/python: devel/python/3.7.4_gnu_9.2, devel/python/3.8.1_gnu_9.2, devel/python/3.8.1_intel_19.1
  +
  +
math/R: math/R/3.6.3
  +
  +
math/julia: math/julia/1.3.1
  +
  +
mpi/impi: mpi/impi/2018, mpi/impi/2019, mpi/impi/2020
  +
  +
mpi/openmpi: mpi/openmpi/4.0
  +
  +
numlib/mkl: numlib/mkl/2018, numlib/mkl/2019, numlib/mkl/2020
  +
  +
numlib/python_numpy: numlib/python_numpy/1.17.2_python_3.7.4_gnu_9.2
  +
  +
numlib/python_scipy: numlib/python_scipy/1.3.1_numpy_1.17.2_python_3.7.4_gnu_9.2
  +
  +
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  +
  +
To learn more about a package execute:
  +
  +
$ module spider Foo
  +
  +
where "Foo" is the name of a module.
  +
  +
To find detailed information about a particular package you
  +
must specify the version if there is more than one version:
  +
  +
$ module spider Foo/11.1
  +
  +
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
</pre>
 
</pre>
 
''''module spider name/version'''' : If you search the full name and version of the module, the search gives detailed information about that module version.
 
''''module spider name/version'''' : If you search the full name and version of the module, the search gives detailed information about that module version.
 
<pre>
 
<pre>
$ module spider devel/netbeans/8.2
+
$ module spider devel/cmake
   
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
devel/netbeans: devel/netbeans/8.2
+
devel/cmake: devel/cmake/3.16
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   
This module can be loaded directly: module load devel/netbeans/8.2
+
This module can be loaded directly: module load devel/cmake/3.16
   
 
Help:
 
Help:
  +
Home page: https://www.cmake.org
The NetBeans IDE is a world-class development environment written in
 
  +
Online Documentation: https://www.cmake.org/HTML/Documentation.html
Java. It can be used to develop code in Java, HTML, XML, JSP, C/C++,
 
  +
Local Documentation: /opt/bwhpc/common/devel/cmake/3.16.4/docFAQ: https://gitlab.kitware.com/cmake/community/wikis/FAQ
and other languages. The IDE is modular and there is a huge variety of
 
  +
commercial and free extensions for it that support various
 
  +
In case of problems, please contact 'bwunicluster-hotline (at) lists.kit.edu'
technologies.
 
  +
or submit a trouble ticket at http://www.support.bwhpc-c5.de.
  +
 
</pre>
 
</pre>
Moreover, you can see the dependencies of the module with using the same command. For example, if the following is executed, you can see which modules need to be loaded before loading the module mpi/openmpi/1.10
+
Moreover, you can see the dependencies of the module with using the same command. For example, if the following is executed, you can see which modules need to be loaded before loading the module mpi/impi/2019
 
<pre>
 
<pre>
$ module spider mpi/openmpi/1.10
+
$ module spider mpi/impi/2019
   
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mpi/openmpi: mpi/openmpi/1.10
+
mpi/impi: mpi/impi/2019
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   
You will need to load all module(s) on any one of the lines below before the "mpi/openmpi/1.10" module is available to load.
+
You will need to load all module(s) on any one of the lines below before the "mpi/impi/2019" module is available to load.
   
compiler/clang/7.0
+
compiler/clang/9.0
compiler/gnu/4.8
+
compiler/gnu/9.2
compiler/gnu/4.8.5
 
compiler/gnu/6
 
compiler/gnu/7
 
compiler/gnu/8
 
compiler/intel/17.0
 
 
compiler/intel/18.0
 
compiler/intel/18.0
 
compiler/intel/19.0
 
compiler/intel/19.0
  +
compiler/intel/19.1
 
 
 
Help:
 
Help:
  +
Intel(R) MPI Library
Open MPI (http://www.openmpi.org) is an open source implementation of the
 
  +
Message Passing Interface specification (http://www.mpi-forum.org/) developed
 
and maintained by a consortium of research, academic, and industry partners.
 
[...]
 
 
</pre>
 
</pre>
 
<br>
 
<br>

Latest revision as of 02:12, 8 October 2022


1 Introduction

Software (Environment) Modules, or short Modules are the means by which most of the installed scientific software is provided on bwUniCluster 2.0.
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. bwUniCluster 2.0 provides users with the possibility to load and unload complete environments for compilers, libraries and software packages by a single command.

2 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.
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.
The software stack of bwUniCluster 2.0 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.
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.
If you want to see which modules are loaded you must execute 'module list'.

$ module list
Currently Loaded Modules:
  1) compiler/intel/19.1   2) mpi/impi/2019   3) numlib/mkl/2019


3 Usage

Lmod on bwUniCluster 2.0: A New Environment Module System from http://lmod.readthedocs.org/en/latest/ is installed.

3.1 Documentation

Execute 'module help' or 'man module' for help on how to use Modules software.

$ module help
Usage: module [options] sub-command [args ...]

Options:
  -h -? -H --help                   This help message
  -s availStyle --style=availStyle  Site controlled avail style: system (default: system)
  --regression_testing              Lmod regression testing
  -D                                Program tracing written to stderr
  --debug=dbglvl                    Program tracing written to stderr (where dbglvl is a number 1,2,3)
  --pin_versions=pinVersions        When doing a restore use specified version, do not follow defaults
  -d --default                      List default modules only when used with avail
  -q --quiet                        Do not print out warnings
  --expert                          Expert mode
  -t --terse                        Write out in machine readable format for commands: list, avail, spider, savelist
  --initial_load                    loading Lmod for first time in a user shell
  --latest                          Load latest (ignore default)
  --ignore_cache                    Treat the cache file(s) as out-of-date
  --novice                          Turn off expert and quiet flag
  --raw                             Print modulefile in raw output when used with show
  -w twidth --width=twidth          Use this as max term width
  -v --version                      Print version info and quit
  -r --regexp                       use regular expression match
  --gitversion                      Dump git version in a machine readable way and quit
  --dumpversion                     Dump version in a machine readable way and quit
  --check_syntax --checkSyntax      Checking module command syntax: do not load
  --config                          Report Lmod Configuration
  --config_json                     Report Lmod Configuration in json format
  --mt                              Report Module Table State
  --timer                           report run times
  --force                           force removal of a sticky module or save an empty collection
  --redirect                        Send the output of list, avail, spider to stdout (not stderr)
  --no_redirect                     Force output of list, avail and spider to stderr
  --show_hidden                     Avail and spider will report hidden modules
  --spider_timeout=timeout          a timeout for spider
  -T --trace                        

module [options] sub-command [args ...]

Help sub-commands:
------------------
  help                              prints this message
  help                module [...]  print help message from module(s)

Loading/Unloading sub-commands:
-------------------------------
  load | add          module [...]  load module(s)
  try-load | try-add  module [...]  Add module(s), do not complain if not found
  del | unload        module [...]  Remove module(s), do not complain if not found
  swap | sw | switch  m1 m2         unload m1 and load m2
  purge                             unload all modules
  refresh                           reload aliases from current list of modules.
  update                            reload all currently loaded modules.

Listing / Searching sub-commands:
---------------------------------
  list                              List loaded modules
  list                s1 s2 ...     List loaded modules that match the pattern
  avail | av                        List available modules
  avail | av          string        List available modules that contain "string".
  spider                            List all possible modules
  spider              module        List all possible version of that module file
  spider              string        List all module that contain the "string".
  spider              name/version  Detailed information about that version of the module.
  whatis              module        Print whatis information about module
  keyword | key       string        Search all name and whatis that contain "string".

Searching with Lmod:
--------------------
  All searching (spider, list, avail, keyword) support regular expressions:


  -r spider           '^p'          Finds all the modules that start with `p' or `P'
  -r spider           mpi           Finds all modules that have "mpi" in their name.
  -r spider           'mpi$         Finds all modules that end with "mpi" in their name.

Handling a collection of modules:
--------------------------------
  save | s                          Save the current list of modules to a user defined "default" collection.
  save | s            name          Save the current list of modules to "name" collection.
  reset                             The same as "restore system"
  restore | r                       Restore modules from the user's "default" or system default.
  restore | r         name          Restore modules from "name" collection.
  restore             system        Restore module state to system defaults.
  savelist                          List of saved collections.
  describe | mcc      name          Describe the contents of a module collection.
  disable             name          Disable (i.e. remove) a collection.

Deprecated commands:
--------------------
  getdefault          [name]        load name collection of modules or user's "default" if no name given.
                                    ===> Use "restore" instead  <====
  setdefault          [name]        Save current list of modules to name if given, otherwise save as the default list for you the user.
                                    ===> Use "save" instead. <====

Miscellaneous sub-commands:
---------------------------
  is-loaded           modulefile    return a true status if module is loaded
  is-avail            modulefile    return a true status if module can be loaded
  show                modulefile    show the commands in the module file.
  use [-a]            path          Prepend or Append path to MODULEPATH.
  unuse               path          remove path from MODULEPATH.
  tablelist                         output list of active modules as a lua table.

Important Environment Variables:
--------------------------------
  LMOD_COLORIZE                     If defined to be "YES" then Lmod prints properties and warning in color.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Lmod Web Sites

  Documentation:    http://lmod.readthedocs.org
  Github:           https://github.com/TACC/Lmod
  Sourceforge:      https://lmod.sf.net
  TACC Homepage:    https://www.tacc.utexas.edu/research-development/tacc-projects/lmod

  To report a bug please read http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Modules based on Lua: Version 8.2 (8.2-1-g9c98036c) 2019-10-30 11:17 -05:00
    by Robert McLay mclay@tacc.utexas.edu


For help on particular version of Module, e.g. Intel default compiler version, execute 'module help compiler/intel'.

$ module help compiler/intel
---------------------- Module Specific Help for "compiler/intel/19.1" ----------------------
Intel(R) Compilers 19.1 for Linux*
For details see: https://software.intel.com/en-us/intel-compilers
In case of problems, please contact: Hartmut Häfner <hartmut.haefner@kit.edu>
SCC support end: 2022-12-31


3.1.1 Online Documentation

Lmod: A New Environment Module System

3.2 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:

$ module avail

The short form the command is:

$ module av

Available Modules can be also displayed in different modes, such as

  • each Module per one line
$ module -t avail

Some modules may not be available right now, because their requirements are not met. To get a complete list of all possible modules use the module spider command.

3.3 Module categories, versions and defaults

The bwHPC clusters 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 all versions of the Intel compiler belong to the category of compilers, thus the corresponding modulefiles are 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


3.4 Finding software Modules

Currently all bwUniCluster 2.0 software packages are assigned to the following Module categories (???):

  • bio
  • cae
  • chem
  • compiler
  • devel
  • lib
  • math
  • mpi
  • numlib
  • phys
  • system
  • toolkit
  • vis

You can selectively list software in one of those categories using, e.g. for the category "compiler"

$ module avail compiler/

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"

$ module avail c

while this would find nothing

$ module avail hem


3.5 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.

3.5.1 Loading conflicts

You can not load different versions of the same software at the same time! Loading the Intel compiler in version X while Intel compiler in version Y is loaded leads to an automatic unloading of Intel compiler in version Y.

3.5.2 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.

All the changes to the current shell session to be invoked by loading the Module can be reviewed using
'module show category/softwarename/version'.

Example (Intel compiler)

$ module show compiler/intel
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   /opt/bwhpc/common/modulefiles/Core/compiler/intel/19.1.lua:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
setenv("INTEL_LICENSE_FILE","28518@scclic1.scc.kit.edu")
setenv("AR","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/xiar")
setenv("CC","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/icc")
setenv("CXX","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/icpc")
setenv("F77","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/ifort")
setenv("FC","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64/ifort")
setenv("CFLAGS","-O2 -xCORE-AVX2")
setenv("CXXFLAGS","-O2 -xCORE-AVX2")
setenv("FFLAGS","-O2 -xCORE-AVX2")
setenv("FCFLAGS","-O2 -xCORE-AVX2")
setenv("INTEL_VERSION","19.1.0.166")
setenv("INTEL_HOME","/opt/intel/compilers_and_libraries_2020/linux")
setenv("INTEL_BIN_DIR","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64")
setenv("INTEL_LIB_DIR","/opt/intel/compilers_and_libraries_2020/linux/lib/intel64")
setenv("INTEL_INC_DIR","/opt/intel/compilers_and_libraries_2020/linux/include")
setenv("INTEL_MAN_DIR","/opt/intel/compilers_and_libraries_2020/linux/man/common")
setenv("INTEL_DOC_DIR","/opt/intel/compilers_and_libraries_2020/linux/documentation/en")
setenv("GDB_VERSION","19.1.0.166")
setenv("GDB_HOME","/opt/intel/debugger_2020/gdb/intel64")
setenv("GDB_BIN_DIR","/opt/intel/debugger_2020/gdb/intel64/bin")
setenv("GDB_LIB_DIR","/opt/intel/debugger_2020/libipt/intel64/lib")
setenv("GDB_INC_DIR","/opt/intel/debugger_2020/gdb/intel64/include")
setenv("GDB_INF_DIR","/opt/intel/documentation_2020/en/debugger/gdb-ia/info")
setenv("GDB_MAN_DIR","/opt/intel/documentation_2020/en/debugger/gdb-ia/man")
setenv("KMP_AFFINITY","noverbose,granularity=core,respect,warnings,compact,1")
prepend_path("PATH","/opt/intel/compilers_and_libraries_2020/linux/bin/intel64")
prepend_path("MANPATH","/opt/intel/compilers_and_libraries_2020/linux/man/common")
prepend_path("LD_LIBRARY_PATH","/opt/intel/compilers_and_libraries_2020/linux/lib/intel64")
whatis("Sets up Intel C/C++ and Fortran compiler version 19.1 (Intel(R) Compilers 19.1 for Linux*) - supported by SCC till 2022-12-31!")
help([[Intel(R) Compilers 19.1 for Linux*
For details see: https://software.intel.com/en-us/intel-compilers
In case of problems, please contact: Hartmut Häfner <hartmut.haefner@kit.edu>
SCC support end: 2022-12-31]])
prepend_path("MODULEPATH","/software/bwhpc/common/modulefiles/Compiler/intel/19.1")
family("compiler")



3.5.3 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.


3.6 Unloading Modules

To unload or remove a software Module execute:

$ module unload category/softwarename/version

or

$ module remove category/softwarename/version


3.6.1 Unloading all loaded modules

3.6.1.1 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.
In order to remove all previously loaded software modules from your environment issue the command 'module purge'.
Example

$ module list
Currently Loaded Modules:
  1) compiler/intel/19.1   2) mpi/impi/2019   3) numlib/mkl/2019
$
$ module purge
$ module list
No modules loaded
$ 

Beware!
'module purge' is working without any further inquiry.

3.7 Display your loaded Modules

All Modules that are currently loaded for you can be displayed by the command 'module list'. See example above.
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.

3.8 Display all possible Modules

Modulefiles can be searched by the user. You can dipslay all possible modules by executing:

$ module spider 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The following is a list of the modules and extensions currently available:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  cae/abaqus: cae/abaqus/2018, cae/abaqus/2019

  cae/adina: cae/adina/9.1.2

  cae/ansys: cae/ansys/19.2, cae/ansys/2019R3, cae/ansys/2020R1

  cae/comsol: cae/comsol/5.4, cae/comsol/5.5

  cae/cst: cae/cst/2018

  cae/lsdyna: cae/lsdyna/901

  cae/openfoam: cae/openfoam/v1912, cae/openfoam/2.4.x, cae/openfoam/6, cae/openfoam/7

  cae/paraview: cae/paraview/5.8

  cae/starccm+: cae/starccm+/14.02.010, cae/starccm+/2019.2.1

  cae/starcd: cae/starcd/4.28

  compiler/clang: compiler/clang/9.0

  compiler/gnu: compiler/gnu/9.2

  compiler/intel: compiler/intel/18.0, compiler/intel/19.0, compiler/intel/19.1

  compiler/pgi: compiler/pgi/2019

  devel/cmake: devel/cmake/3.16

  devel/cuda: devel/cuda/9.2, devel/cuda/10.0, devel/cuda/10.2

  devel/gdb: devel/gdb/9.1

  devel/python: devel/python/3.7.4_gnu_9.2, devel/python/3.8.1_gnu_9.2, devel/python/3.8.1_intel_19.1

  math/R: math/R/3.6.3

  math/julia: math/julia/1.3.1

  mpi/impi: mpi/impi/2018, mpi/impi/2019, mpi/impi/2020

  mpi/openmpi: mpi/openmpi/4.0

  numlib/mkl: numlib/mkl/2018, numlib/mkl/2019, numlib/mkl/2020

  numlib/python_numpy: numlib/python_numpy/1.17.2_python_3.7.4_gnu_9.2

  numlib/python_scipy: numlib/python_scipy/1.3.1_numpy_1.17.2_python_3.7.4_gnu_9.2

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

To learn more about a package execute:

   $ module spider Foo

where "Foo" is the name of a module.

To find detailed information about a particular package you
must specify the version if there is more than one version:

   $ module spider Foo/11.1

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

'module spider name/version' : If you search the full name and version of the module, the search gives detailed information about that module version.

$ module spider devel/cmake

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  devel/cmake: devel/cmake/3.16
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    This module can be loaded directly: module load devel/cmake/3.16

    Help:
      Home page:            https://www.cmake.org
      Online Documentation: https://www.cmake.org/HTML/Documentation.html
      Local Documentation:  /opt/bwhpc/common/devel/cmake/3.16.4/docFAQ:                  https://gitlab.kitware.com/cmake/community/wikis/FAQ
      
      In case of problems, please contact 'bwunicluster-hotline (at) lists.kit.edu'
      or submit a trouble ticket at http://www.support.bwhpc-c5.de.
 

Moreover, you can see the dependencies of the module with using the same command. For example, if the following is executed, you can see which modules need to be loaded before loading the module mpi/impi/2019

$ module spider mpi/impi/2019

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  mpi/impi: mpi/impi/2019
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    You will need to load all module(s) on any one of the lines below before the "mpi/impi/2019" module is available to load.

      compiler/clang/9.0
      compiler/gnu/9.2
      compiler/intel/18.0
      compiler/intel/19.0
      compiler/intel/19.1
 
    Help:
      Intel(R) MPI Library


4 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?
The module command is not a program, but a bash-function. You can view its content using:

$ type module

and you will get the following result:

$ type module
module is a function
module () 
{ 
    eval $($LMOD_CMD bash "$@");
    [ $? = 0 ] && eval $(${LMOD_SETTARG_CMD:-:} -s sh)
}

In this function, lmod 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).


Back to top