This tutorial shows how to install IMAS ecosystem using EasyBuild. The installation will be performed on the Gateway cluster but it can be done anywhere.
Before you start, make sure that:
TMP
directory is set up to use $ITMWORK
Sources of the receipts (aka 'easyconfig' files):
SDCC: /work/imas/opt/EasyBuild/ebfiles_repo/
rsync -av --delete -e "ssh -J <user>@sdcc-login.iter.org" <user>@sdcc-login02.iter.org:/work/imas/opt/EasyBuild/ebfiles_repo/ ./all_iter/ |
Clone these repositories and specify the paths to them in the --robot
in the next step.
TBD |
Remember to change the --robot
and pass paths to your and TBD
directories.
eb IMAS-AL-Cpp/IMAS-AL-Cpp-5.2.0dev-foss-2020b-DD-3.40.1.eb --allow-modules-tool-mismatch --robot=/pfs/work/g2pbloch/test_instruction/easybuild-imas-files:/pfs/work/g2pbloch/test_instruction/eb_files_repo eb IMAS-AL-Fortran/IMAS-AL-Fortran-5.2.0dev-foss-2020b-DD-3.40.1.eb --allow-modules-tool-mismatch --robot=/pfs/work/g2pbloch/test_instruction/easybuild-imas-files:/pfs/work/g2pbloch/test_instruction/eb_files_repo eb IMAS-AL-Java/IMAS-AL-Java-5.2.0dev-foss-2020b-Java-11-DD-3.40.1.eb --allow-modules-tool-mismatch --robot=/pfs/work/g2pbloch/test_instruction/easybuild-imas-files:/pfs/work/g2pbloch/test_instruction/eb_files_repo eb IMAS-AL-Python/IMAS-AL-Python-5.2.0dev-foss-2020b-DD-3.40.1.eb --allow-modules-tool-mismatch --robot=/pfs/work/g2pbloch/test_instruction/easybuild-imas-files:/pfs/work/g2pbloch/test_instruction/eb_files_repo |
Remember to change the --robot
and pass paths to your easybuild-files
and easybuild-imas-files
directories.
eb ./ebfiles_repo/IMAS/IMAS-3.42.0-2024.08.1-foss-2023b.eb --allow-modules-tool-mismatch --robot=<path_to_ebfiles_repo> --accept-eula-for=Intel-oneAPI eb ./ebfiles_repo/IMAS/IMAS-3.42.0-2024.08.1-intel-2023b.eb --allow-modules-tool-mismatch --robot=<path_to_ebfiles_repo> --accept-eula-for=Intel-oneAPI |
imasenv
moduleAfter installation you can load IMAS
modules i.e:
module use {prefix}/modules/all module load IMAS-AL-Cpp/5.2.0dev-foss-2020b-DD-3.40.1 module load IMAS-AL-Fortran/5.2.0dev-foss-2020b-DD-3.40.1 module load IMAS-AL-Java/5.2.0dev-foss-2020b-Java-11-DD-3.40.1 module load IMAS-AL-Python/5.2.0dev-foss-2020b-DD-3.40.1 |
IMAS-AL-Cpp/IMAS-AL-Cpp-5.2.0dev-foss-2020b-DD-3.40.1.eb - path to EasyBuild configuration file
--allow-modules-tool-mismatch
- flag--robot
- paths to configuration filesTo install the 'production' version of IMAS ecosystem, a few extra options have to be added to point out EB to the dedicated public directory /gw/swimas/easybuild
--prefix='/gw/swimas/easybuild/opt' --installpath-modules='/gw/swimas/easybuild/etc' # TO BE DISCUSSED: Accessing sources while debugging. Should 'source' directory be public, as well? # following modules must be installed # pkgconfig # Cmake |
MODULEPATH
system variable export MODULEPATH=/gw/swimas/easybuild/etc/all |
--use-existing-modules
switch to eb
commandTO BE CHECKED !!!!! {{ |
EasyBuild requires no modules to be loaded ! Please execute:
|
Easybuild produces a lot of temporary content (logs, intermediate build files, etc)
The default /tmp
dir on the GW offers quite small capacity. Once tmp is full, system cannot work properly.
It is strongly recommended to change the default /tmp
to a directory in $ITMWORK
tmpdir=$ITMWORK/tmp export TMP=${tmpdir} export TEMP=${tmpdir} export TMPDIR=${tmpdir} |
# Run 'interactive' batch job using SLURM 'srun' command # -p gw : 'gw' queue offering the longer walltime than the default 'gwdebug' # --ntasks-per-node=48 : number of cores requested (1 node provides up to 48 cores) # --time=48:0:0 : walltime (documentation says that the default walltime in 'gw' queue is 48h but not explicitly specified is set to 1h - To Be Checked) # --x11 : X11 forwarding (optional) # --pty /bin/bash : pseudoterminal bash> srun -p gw --ntasks-per-node=48 --time=48:0:0 --pty /bin/bash |
Once resources are allocated, a new shell opens on the working node usually reporting file system error:
bash: /afs/eufus.eu/user/g/g2<user>/.bashrc: Permission denied |
It means that the Kerberos token should be set/renewed, to allow access to the filesystem:
bash> kinit; aklog |
Now .bash_profile
could be 'sourced' to enable user's startup settings:
bash> source .bash_profile |
Now EasyBuild can be used to build a software.
|
Easybuild shows only the first 300 characters of error/warning message and cuts (usually the most interesting) remaining part of the message.
The message length value is hardcoded and can be change only by 'hacking' the EB codes:
<easybuild virtual env>/lib/python3.10/site-packages/easybuild/framework/easyblock.py
except EasyBuildError as err: first_n = 300 # <=== HERE is the limit hardcoded errormsg = "build failed (first %d chars): %s" % (first_n, err.msg[:first_n]) _log.warning(errormsg) result = False |
err.msg[:first_n])
==> err.msg
--parallel=1
optionPerl
: make[1]: Entering directory `/afs/gw/swimas/easybuild/opt/build/Perl/5.38.0/GCCcore-13.2.0/perl-5.38.0/utils' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/afs/gw/swimas/easybuild/opt/build/Perl/5.38.0/GCCcore-13.2.0/perl-5.38.0/utils' Everything is up to date. Type 'make test' to run test suite. ./perl -Ilib -I. installperl --destdir= mkdir /afs/.gw: Read-only file system at ./install_lib.pl line 146. make: *** [install-all] Error 30 (at easybuild/tools/run.py:682 in parse_cmd_output) |
/afs
. Try changing it.cairo
and old ttx
you can link old ttx
to /usr/bin/true
.Bundle