Module System
The Anvil cluster uses Lmod to manage the user environment, so users have access to the necessary software packages and versions to conduct their research activities. The associated module
command can be used to load applications and compilers, making the corresponding libraries and environment variables automatically available in the user environment.
Lmod is a hierarchical module system, meaning a module can only be loaded after loading the necessary compilers and MPI libraries that it depends on. This helps avoid conflicting libraries and dependencies being loaded at the same time. A list of all available modules on the system can be found with the module spider
command:
$ module spider # list all modules, even those not available due to incompatible with currently loaded modules
-----------------------------------------------------------------------------------
The following is a list of the modules and extensions currently available:
-----------------------------------------------------------------------------------
amdblis: amdblis/3.0
amdfftw: amdfftw/3.0
amdlibflame: amdlibflame/3.0
amdlibm: amdlibm/3.0
amdscalapack: amdscalapack/3.0
anaconda: anaconda/2021.05-py38
aocc: aocc/3.0
Lines 1-45
The module spider
command can also be used to search for specific module names.
$ module spider intel # all modules with names containing 'intel'
-----------------------------------------------------------------------------------
intel:
-----------------------------------------------------------------------------------
Versions:
intel/19.0.5.281
intel/19.1.3.304
Other possible modules matches:
intel-mkl
-----------------------------------------------------------------------------------
$ module spider intel/19.1.3.304 # additional details on a specific module
-----------------------------------------------------------------------------------
intel: intel/19.1.3.304
-----------------------------------------------------------------------------------
This module can be loaded directly: module load intel/19.1.3.304
Help:
Intel Parallel Studio.
When users log into Anvil, a default compiler (GCC), MPI libraries (OpenMPI), and runtime environments (e.g., Cuda on GPU-nodes) are automatically loaded into the user environment. It is recommended that users explicitly specify which modules and which versions are needed to run their codes in their job scripts via the module load
command. Users are advised not to insert module load
commands in their bash profiles, as this can cause issues during initialization of certain software (e.g. Thinlinc).
When users load a module, the module system will automatically replace or deactivate modules to ensure the packages you have loaded are compatible with each other. Following example shows that the module system automatically unload the default Intel compiler version to a user-specified version:
$ module load intel # load default version of Intel compiler
$ module list # see currently loaded modules
Currently Loaded Modules:
1) intel/19.0.5.281
$ module load intel/19.1.3.304 # load a specific version of Intel compiler
$ module list # see currently loaded modules
The following have been reloaded with a version change:
1) intel/19.0.5.281 => intel/19.1.3.304
Most modules on Anvil include extensive help messages, so users can take advantage of the module help APPNAME
command to find information about a particular application or module. Every module also contains two environment variables named $RCAC_APPNAME_ROOT
and $RCAC_APPNAME_VERSION
identifying its installation prefix and its version. This information can be found by module show APPNAME
. Users are encouraged to use generic environment variables such as CC, CXX, FC, MPICC, MPICXX etc. available through the compiler and MPI modules while compiling their code.
Link to section 'Some other common module commands:' of 'Module System' Some other common module commands:
To unload a module
$ module unload mymodulename
To unload all loaded modules and reset everything to original state.
$ module purge
To see all available modules that are compatible with current loaded modules
$ module avail
To display information about a specified module, including environment changes, dependencies, software version and path.
$ module show mymodulename