Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)
Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)
------------------------------------
------------------------------------
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# How to install User Software using EasyBuild
# How to install User Software using EasyBuild
[EasyBuild](https://www.easybuild.io) is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.
[EasyBuild](https://www.easybuild.io) is a software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way.
All software modules you can load with `module load` on the supercomputers at the Jülich Supercomputing Centre (JSC) was installed using EasyBuild.
All software modules you can load with `module load` on the supercomputers at the Jülich Supercomputing Centre (JSC) was installed using EasyBuild.
There are multiple reasons for a build & installation framework like [EasyBuild](https://easybuild.io).
There are multiple reasons for a build & installation framework like [EasyBuild](https://easybuild.io).
And some reasons are not only convincing for HPC centers but also for HPC users:
And some reasons are not only convincing for HPC centers but also for HPC users:
- fully automates software builds
- fully automates software builds
- allows for easily reproducing previous builds
- allows for easily reproducing previous builds
- keep the software build recipes/specifications simple and human-readable
- keep the software build recipes/specifications simple and human-readable
- supports co-existence of versions/builds via dedicated installation prefix and module files
- supports co-existence of versions/builds via dedicated installation prefix and module files
- automagic dependency resolution
- automagic dependency resolution
- ...
- ...
<divclass="alert alert-block alert-info">
<divclass="alert alert-block alert-info">
<b>UserInstallations</b></br>
<b>UserInstallations</b></br>
allow you to easily install software for your own use or for everyone in your compute-time project.</br>
allow you to easily install software for your own use or for everyone in your compute-time project.</br>
</div>
</div>
This notebook shows you how to make and load your own first software module.
This notebook shows you how to make and load your own first software module.
-------------------------
-------------------------
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Introduction
## Introduction
Whenever you want to load a certain software module you call `module load <software>` .
Whenever you want to load a certain software module you call `module load <software>` .
This command searches all paths in `$MODULEPATH` for a matching configuration file.
This command searches all paths in `$MODULEPATH` for a matching configuration file.
In general you start loading first a software stage, then a compiler and after that a MPI.
In general you start loading first a software stage, then a compiler and after that a MPI.
e.g. `module load Stages/2020 GCC/10.3.0 ParaStationMPI`
e.g. `module load Stages/2020 GCC/10.3.0 ParaStationMPI`
These special modules (stages, compilers, MPIs) additionally extend the module paths in `$MODULEPATH` .
These special modules (stages, compilers, MPIs) additionally extend the module paths in `$MODULEPATH` .
It ensures that you can load further modules, which fit to the loaded stage, compiler and MPI.
It ensures that you can load further modules, which fit to the loaded stage, compiler and MPI.
Now, if compatible private or project software modules are installed (by yourself or someone in your project)
Now, if compatible private or project software modules are installed (by yourself or someone in your project)
the module paths is **additionally extended** by the special modules (compilers, MPIs) with ...
the module paths is **additionally extended** by the special modules (compilers, MPIs) with ...
<divclass="alert alert-block alert-info">
<divclass="alert alert-block alert-info">
<b>User-specific module paths</b></br>
<b>User-specific module paths</b></br>
<ul>
<ul>
<li>\$HOME/easybuild</li>
<li>\$HOME/easybuild</li>
<li>\$PROJECT/easybuild</li>
<li>\$PROJECT/easybuild</li>
</ul>
</ul>
</div>
</div>
The hierarchy of preference is `$HOME/easybuild` highest, then `$PROJECT/easybuild`, then the system installation:
The hierarchy of preference is `$HOME/easybuild` highest, then `$PROJECT/easybuild`, then the system installation: