NEMO2/Easybuild Modules
EasyBuild is a software build and installation framework designed to manage scientific software on High-Performance Computing (HPC) systems. It automates the process of building and installing software, ensuring reproducibility and consistency across environments. EasyBuild uses "easyconfig" files to define build parameters, dependencies, and configurations, simplifying the management of complex software stacks.
NEMO2 utilizes EasyBuild to manage its software modules. Currently, only EasyBuild modules are available on NEMO2.
For more information, visit:
- Official website: https://easybuild.io/
- GitHub repository: https://github.com/easybuilders/easybuild
- Documentation: https://docs.easybuild.io/
Modules for Each Architecture and Slurm Partition
All EasyBuild modules are compiled for each architecture/Slurm partition (see NEMO2/Hardware). The login nodes use Genoa CPUs and therefore display only the Genoa modules. To view all architectures/Slurm partitions, run: module avail arch
.
To see which modules are available for a specific architecture, load the corresponding module: module load arch/milan
.
If you compile your own software, you should adapt it accordingly or create a version compatible with the architectures you intend to use. You can use the environment variable $ARCH
for this purpose. This variable is set for each architecture or after switching architectures with module load arch/<arch>
. If you compile for Milan, it will likely work on Genoa as well.
Own Compilations
If you compile applications for each architecture, you can use the $ARCH
environment variable. This variable can also be used in job scripts.
Example:
$HOME/software/$ARCH/lammps/lmp
If you compile code for arch/milan
but want to run your software on arch/genao
, you must first load the arch/milan
module before running your compiled code. Otherwise, the loaded software may not match the environment used during compilation.
Example:
salloc -n1 -p genoa module load arch/milan $HOME/software/$ARCH/lammps/lmp [...]
Loading a new architecture module with module load arch/<arch>
sets the environment variable ARCH=<arch>
. This is done automatically on each node. If you want to override it, you must run module load arch/<arch> explicitly.
Long Module Listings and Extensions
If module avail
produces a long list, you can use module overview
for a summary. Afterward, you can filter by categories or applications, such as module avail compiler
or module avail llvm
.
If you want to hide the module extensions at the end of the listings, you can add --nx
or --no_extensions
: module --nx avail
. You can also set an environment variable to permanently hide extensions: export LMOD_AVAIL_EXTENSIONS=no
.