From d24352c6b0e75bbace80861e9201f05c00f883fe Mon Sep 17 00:00:00 2001 From: Emmanuel Kieffer Date: Thu, 27 Jul 2023 12:56:20 +0200 Subject: [PATCH] [AWS] -- second call -- updated documentation --- docs/aws/connection.md | 4 +- docs/aws/images/queues.png | Bin 46760 -> 34577 bytes docs/aws/overview.md | 2 +- docs/aws/setup.md | 343 ++++++++++++++++++++++++++++++++++++- 4 files changed, 345 insertions(+), 4 deletions(-) diff --git a/docs/aws/connection.md b/docs/aws/connection.md index 17cc3add..9b8d3adc 100644 --- a/docs/aws/connection.md +++ b/docs/aws/connection.md @@ -8,7 +8,7 @@ Once your account has been enabled, you can connect to the cluster using ssh. Co To create a direct connection, use the command below (using your specific cluster name if it differs from workshop-cluster). ```bash -ssh -i sshkey.pem username@ec2-44-209-227-16.compute-1.amazonaws.com +ssh -i id_rsa username@ec2-52-5-167-162.compute-1.amazonaws.com ``` This will open a direct, non-graphical connection in the terminal. To exit the remote terminal session, use the standard Linux command “exit”. @@ -17,7 +17,7 @@ Alternatively, you may want to save the configuration of this connection (and cr ```bash Host aws-ulhpc-access User username - Hostname ec2-44-209-227-16.compute-1.amazonaws.com + Hostname ec2-52-5-167-162.compute-1.amazonaws.com IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes ``` diff --git a/docs/aws/images/queues.png b/docs/aws/images/queues.png index 86c26ea7e6cf409fabdc1ef6a2ccb987f52fce4e..f64ce31dcef9715501ea8149b3ab28f74f74570f 100644 GIT binary patch literal 34577 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%0DOPl=~G^=|s&4au#$4)L2-)K=}DNIj}?3%3mCF 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 Xiw~2whd!w#eWaZ9WvMK}jR*e)va95A literal 46760 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 diff --git a/docs/aws/overview.md b/docs/aws/overview.md index e0edb032..ab828ac9 100644 --- a/docs/aws/overview.md +++ b/docs/aws/overview.md @@ -19,7 +19,7 @@ After initial project selection by a steering committee that includes representa ## System description and environment -The AWS Parallel Cluster based on the new Graviton3 (all instances and storage located in US-EAST-1) will provide cloud computing services to Uni.lu that will support the development, design, and testing of numerical codes, which traditionally demands a lot of compute power. This will give researchers an accessible, easy-to-use, end-to-end environment in which they can validate their simulation codes on ARM64 architectures, including servers, personal computers, and Internet of Things (IoT). The cluster will consist in two main partitions and jobs will be submitted using the [Slurm scheduler](https://slurm.schedmd.com/documentation.html) : +The AWS Parallel Cluster based on the new [HPC-based Graviton3 instances](https://aws.amazon.com/ec2/instance-types/hpc7g/) (all instances and storage located in US-EAST-1) will provide cloud computing services to Uni.lu that will support the development, design, and testing of numerical codes, which traditionally demands a lot of compute power. This will give researchers an accessible, easy-to-use, end-to-end environment in which they can validate their simulation codes on ARM64 architectures, including servers, personal computers, and Internet of Things (IoT). The cluster will consist in two main partitions and jobs will be submitted using the [Slurm scheduler](https://slurm.schedmd.com/documentation.html) : diff --git a/docs/aws/setup.md b/docs/aws/setup.md index 50fb686f..7eb849a0 100644 --- a/docs/aws/setup.md +++ b/docs/aws/setup.md @@ -3,7 +3,348 @@ AWS suggest to use Spack to setup your software environment. There is no hard requirement that you must use Spack. However we have included it here, as it is a quick, simple way to setup a development environment. The official ULHPC swsets are not available on the AWS cluster. If you prefer to use [EasyBuild](../environment/easybuild) or manually compile softwares, please refer to the [ULHPC software documentation](../software/build) for this purpose. -## Install [Spack](ihttps://spack.io/) + +## Environment modules and LMod ## + +Like the ULHPC facility, the AWS cluster relies on the [Environment Modules](http://modules.sourceforge.net/) / [LMod](http://lmod.readthedocs.io/en/latest/) framework which provided the [`module`](http://lmod.readthedocs.io) utility **on Compute nodes** +to manage nearly all software. +There are two main advantages of the `module` approach: + +1. ULHPC can provide many different versions and/or installations of a + single software package on a given machine, including a default + version as well as several older and newer version. +2. Users can easily switch to different versions or installations + without having to explicitly specify different paths. With modules, + the `PATH` and related environment variables (`LD_LIBRARY_PATH`, `MANPATH`, etc.) are automatically managed. + +[Environment Modules](http://modules.sourceforge.net/) in itself are a standard and well-established technology across HPC sites, to permit developing and using complex software and libraries build with dependencies, allowing multiple versions of software stacks and combinations thereof to co-exist. +It **brings the `module` command** which is used to manage environment variables such as `PATH`, `LD_LIBRARY_PATH` and `MANPATH`, enabling the easy loading and unloading of application/library profiles and their dependencies. + +See for more details + + +| Command | Description | +|--------------------------------|---------------------------------------------------------------| +| `module avail` | Lists all the modules which are available to be loaded | +| `module spider ` | Search for among available modules **(Lmod only)** | +| `module load [mod2...]` | Load a module | +| `module unload ` | Unload a module | +| `module list` | List loaded modules | +| `module purge` | Unload all modules (purge) | +| `module display ` | Display what a module does | +| `module use ` | Prepend the directory to the MODULEPATH environment variable | +| `module unuse ` | Remove the directory from the MODULEPATH environment variable | + +At the heart of environment modules interaction resides the following components: + +* the `MODULEPATH` environment variable, which defines the list of searched directories for modulefiles +* `modulefile` + +Take a look at the current values: + +```bash +$ echo $MODULEPATH +/shared/apps/easybuild/modules/all:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles/Linux:/usr/share/modulefiles/Core:/usr/share/lmod/lmod/modulefiles/Core +$ module show toolchain/foss +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + /shared/apps/easybuild/modules/all/toolchain/foss/2022b.lua: +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +help([[ +Description +=========== +GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK. + + +More information +================ + - Homepage: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain +]]) +whatis("Description: GNU Compiler Collection (GCC) based compiler toolchain, including + OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK.") +whatis("Homepage: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain") +whatis("URL: https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain") +conflict("toolchain/foss") +load("compiler/GCC/12.2.0") +load("mpi/OpenMPI/4.1.4-GCC-12.2.0") +load("lib/FlexiBLAS/3.2.1-GCC-12.2.0") +load("numlib/FFTW/3.3.10-GCC-12.2.0") +load("numlib/FFTW.MPI/3.3.10-gompi-2022b") +load("numlib/ScaLAPACK/2.2.0-gompi-2022b-fb") +setenv("EBROOTFOSS","/shared/apps/easybuild/software/foss/2022b") +setenv("EBVERSIONFOSS","2022b") +setenv("EBDEVELFOSS","/shared/apps/easybuild/software/foss/2022b/easybuild/toolchain-foss-2022b-easybuild-devel") +``` +Now you can search for a given software using `module spider `: + +```bash +$ module spider lang/Python +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + lang/Python: +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Description: + Python is a programming language that lets you work more quickly and integrate your systems more effectively. + + Versions: + lang/Python/3.10.8-GCCcore-12.2.0-bare + lang/Python/3.10.8-GCCcore-12.2.0 + +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + For detailed information about a specific "lang/Python" module (including how to load the modules) use the module's full name. + For example: + + $ module spider lang/Python/3.10.8-GCCcore-12.2.0 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +``` + +Let's see the effect of loading/unloading a module + +```bash +$ module list +No modules loaded +$ which python +/usr/bin/python +$ python --version # System level python +Python 2.7.18 + +$ module load lang/Python # use TAB to auto-complete +$ which python +/shared/apps/easybuild/software/Python/3.10.8-GCCcore-12.2.0/bin/python +$ python --version +Python 3.10.8 +$ module purge +``` + +## Installing softwares with [Easybuild](https://easybuild.io/) + +[](https://easybuilders.github.io/easybuild/) + +EasyBuild is a tool that allows to perform automated and reproducible compilation and installation of software. A large number of scientific software are supported (**[2995 supported software packages](http://easybuild.readthedocs.io/en/latest/version-specific/Supported_software.html)** in the last release 4.8.0) -- see also [What is EasyBuild?](http://easybuild.readthedocs.io/en/latest/Introduction.html) + +All builds and installations are performed at user level, so you don't need the admin (i.e. `root`) rights. +The software are installed in your home directory under `$EASYBUILD_PREFIX` -- see + +| | Default setting (local) | Recommended setting | +|---------------------|--------------------------|---------------------------| +| `$EASYBUILD_PREFIX` | `$HOME/.local/easybuild` | `/shared/apps/easybuild/` | +| | | | + +* built software are placed under `${EASYBUILD_PREFIX}/software/` +* modules install path `${EASYBUILD_PREFIX}/modules/all` + + +### Easybuild main concepts + +See also the [official Easybuild Tutorial: "Maintaining a Modern Scientific Software Stack Made Easy with EasyBuild"](https://easybuilders.github.io/easybuild-tutorial/2021-isc21/) + +EasyBuild relies on two main concepts: *Toolchains* and *EasyConfig files*. + +A **toolchain** corresponds to a compiler and a set of libraries which are commonly used to build a software. +The two main toolchains frequently used on the UL HPC platform are the `foss` ("_Free and Open Source Software_") and the `intel` one. + +1. `foss` is based on the GCC compiler and on open-source libraries (OpenMPI, OpenBLAS, etc.). +2. `intel` is based on the Intel compiler and on Intel libraries (Intel MPI, Intel Math Kernel Library, etc.). + +An **EasyConfig file** is a simple text file that describes the build process of a software. For most software that uses standard procedures (like `configure`, `make` and `make install`), this file is very simple. +Many [EasyConfig files](https://github.com/easybuilders/easybuild-easyconfigs/tree/master/easybuild/easyconfigs) are already provided with EasyBuild. +By default, EasyConfig files and generated modules are named using the following convention: +`---`. +However, we use a **hierarchical** approach where the software are classified under a category (or class) -- see the `CategorizedModuleNamingScheme` option for the `EASYBUILD_MODULE_NAMING_SCHEME` environmental variable), meaning that the layout will respect the following hierarchy: +`//--` + +Additional details are available on EasyBuild website: + +- [EasyBuild homepage](https://easybuilders.github.io/easybuild/) +- [EasyBuild documentation](http://easybuild.readthedocs.io/) +- [What is EasyBuild?](http://easybuild.readthedocs.io/en/latest/Introduction.html) +- [Toolchains](https://github.com/easybuilders/easybuild/wiki/Compiler-toolchains) +- [EasyConfig files](http://easybuild.readthedocs.io/en/latest/Writing_easyconfig_files.html) +- [List of supported software packages](http://easybuild.readthedocs.io/en/latest/version-specific/Supported_software.html) + +Easybuild is provided to you as a software module to complement the existing software set. + +``` bash +module load tools/EasyBuild +``` + +In case you cant to install the latest version yourself, please follow [the official instructions](http://easybuild.readthedocs.io/en/latest/Installation.html). +Nonetheless, we strongly recommand to use the provided module. +**Don't forget** to setup your local Easybuild configuration first. + +What is important for the installation of Easybuild are the following variables: + +* `EASYBUILD_PREFIX`: where to install **local** modules and software, _i.e._ `$HOME/.local/easybuild` +* `EASYBUILD_MODULES_TOOL`: the type of [modules](http://modules.sourceforge.net/) tool you are using, _i.e._ `LMod` in this case +* `EASYBUILD_MODULE_NAMING_SCHEME`: the way the software and modules should be organized (flat view or hierarchical) -- we're advising on `CategorizedModuleNamingScheme` + +!!! danger "Important" + * Recall that **you should be on a compute node to install [Easybuild](http://easybuild.readthedocs.io)** (otherwise the checks of the `module` command availability will fail.) + +### Install a missing software by complementing the software set + +The current software set contains the toolchain [foss-2022b](https://docs.easybuild.io/common-toolchains/#common_toolchains_update_cycle) that is necessary to build other softwares. We have build OpenMPI-4.1.4 to take in account the latest AWS EFA and the slurm integration. +In order to install missing softwares for your project, you can complement the existing software set located at `/shared/apps/easybuild` by using the provided EasyBuild module (latest version). +Once Easybuild has been loaded, you can search and install new softwares. By default, these new softwares will be installed at `${HOME}/.local/easybuild`. Feel free to adapt the environment variable `${EASYBUILD_PREFIX}` to select a new installation directory. + +Let's try to install a missing software + +``` bash +(heanode)$ srun -p small -N 1 -n1 -c16 --pty bash -i +(node)$ module spider HPL # HPL is a software package that solves a (random) dense linear system in double precision (64 bits) +Lmod has detected the following error: Unable to find: "HPL". +(node)$ module load tools/EasyBuild +# Search for recipes for the missing software +(node)$ eb -S HPL +== found valid index for /shared/apps/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs, so using it... +CFGS1=/shared/apps/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs + * $CFGS1/b/bashplotlib/bashplotlib-0.6.5-GCCcore-10.3.0.eb + * $CFGS1/h/HPL/HPL-2.1-foss-2016.04.eb + * $CFGS1/h/HPL/HPL-2.1-foss-2016.06.eb + * $CFGS1/h/HPL/HPL-2.1-foss-2016a.eb + * $CFGS1/h/HPL/HPL-2.1-foss-2016b.eb + ... + * $CFGS1/h/HPL/HPL-2.3-foss-2022a.eb + * $CFGS1/h/HPL/HPL-2.3-foss-2022b.eb + * $CFGS1/h/HPL/HPL-2.3-foss-2023a.eb + ... + * $CFGS1/h/HPL/HPL-2.3-intel-2022b.eb + * $CFGS1/h/HPL/HPL-2.3-intel-2023.03.eb + * $CFGS1/h/HPL/HPL-2.3-intel-2023a.eb + * $CFGS1/h/HPL/HPL-2.3-intelcuda-2019b.eb + * $CFGS1/h/HPL/HPL-2.3-intelcuda-2020a.eb + * $CFGS1/h/HPL/HPL-2.3-iomkl-2019.01.eb + * $CFGS1/h/HPL/HPL-2.3-iomkl-2021a.eb + * $CFGS1/h/HPL/HPL-2.3-iomkl-2021b.eb + * $CFGS1/h/HPL/HPL_parallel-make.patch +``` + + +From this list, you should select the version matching the target toolchain version -- here [foss-2022b](https://docs.easybuild.io/common-toolchains/#common_toolchains_update_cycle). + +Once you pick a given recipy, install it with + + eb .eb [-D] -r + +* `-D` enables the dry-run mode to check what's going to be install -- **ALWAYS try it first** +* `-r` enables the robot mode to automatically install all dependencies while searching for easyconfigs in a set of pre-defined directories -- you can also prepend new directories to search for eb files (like the current directory `$PWD`) using the option and syntax `--robot-paths=$PWD:` (do not forget the ':'). See [Controlling the robot search path documentation](http://easybuild.readthedocs.io/en/latest/Using_the_EasyBuild_command_line.html#controlling-the-robot-search-path) +* The `$CFGS/` prefix should be dropped unless you know what you're doing (and thus have previously defined the variable -- see the first output of the `eb -S [...]` command). + +Let's try to review the missing dependencies from a dry-run : + +``` bash +# Select the one matching the target software set version +(node)$ eb HPL-2.3-foss-2022b.eb -Dr # Dry-run +== Temporary log file in case of crash /tmp/eb-lzv785be/easybuild-ihga94y0.log +== found valid index for /shared/apps/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs, so using it... +== found valid index for /shared/apps/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs, so using it... +Dry run: printing build status of easyconfigs and dependencies +CFGS=/shared/apps/easybuild/software/EasyBuild/4.8.0/easybuild/easyconfigs + * [x] $CFGS/m/M4/M4-1.4.19.eb (module: devel/M4/1.4.19) + * [x] $CFGS/b/Bison/Bison-3.8.2.eb (module: lang/Bison/3.8.2) + * [x] $CFGS/f/flex/flex-2.6.4.eb (module: lang/flex/2.6.4) + * [x] $CFGS/z/zlib/zlib-1.2.12.eb (module: lib/zlib/1.2.12) + * [x] $CFGS/b/binutils/binutils-2.39.eb (module: tools/binutils/2.39) + * [x] $CFGS/g/GCCcore/GCCcore-12.2.0.eb (module: compiler/GCCcore/12.2.0) + * [x] $CFGS/z/zlib/zlib-1.2.12-GCCcore-12.2.0.eb (module: lib/zlib/1.2.12-GCCcore-12.2.0) + * [x] $CFGS/h/help2man/help2man-1.49.2-GCCcore-12.2.0.eb (module: tools/help2man/1.49.2-GCCcore-12.2.0) + * [x] $CFGS/m/M4/M4-1.4.19-GCCcore-12.2.0.eb (module: devel/M4/1.4.19-GCCcore-12.2.0) + * [x] $CFGS/b/Bison/Bison-3.8.2-GCCcore-12.2.0.eb (module: lang/Bison/3.8.2-GCCcore-12.2.0) + * [x] $CFGS/f/flex/flex-2.6.4-GCCcore-12.2.0.eb (module: lang/flex/2.6.4-GCCcore-12.2.0) + * [x] $CFGS/b/binutils/binutils-2.39-GCCcore-12.2.0.eb (module: tools/binutils/2.39-GCCcore-12.2.0) + * [x] $CFGS/p/pkgconf/pkgconf-1.9.3-GCCcore-12.2.0.eb (module: devel/pkgconf/1.9.3-GCCcore-12.2.0) + * [x] $CFGS/g/groff/groff-1.22.4-GCCcore-12.2.0.eb (module: tools/groff/1.22.4-GCCcore-12.2.0) + * [x] $CFGS/n/ncurses/ncurses-6.3-GCCcore-12.2.0.eb (module: devel/ncurses/6.3-GCCcore-12.2.0) + * [x] $CFGS/e/expat/expat-2.4.9-GCCcore-12.2.0.eb (module: tools/expat/2.4.9-GCCcore-12.2.0) + * [x] $CFGS/b/bzip2/bzip2-1.0.8-GCCcore-12.2.0.eb (module: tools/bzip2/1.0.8-GCCcore-12.2.0) + * [x] $CFGS/g/GCC/GCC-12.2.0.eb (module: compiler/GCC/12.2.0) + * [x] $CFGS/f/FFTW/FFTW-3.3.10-GCC-12.2.0.eb (module: numlib/FFTW/3.3.10-GCC-12.2.0) + * [x] $CFGS/u/UnZip/UnZip-6.0-GCCcore-12.2.0.eb (module: tools/UnZip/6.0-GCCcore-12.2.0) + * [x] $CFGS/l/libreadline/libreadline-8.2-GCCcore-12.2.0.eb (module: lib/libreadline/8.2-GCCcore-12.2.0) + * [x] $CFGS/l/libtool/libtool-2.4.7-GCCcore-12.2.0.eb (module: lib/libtool/2.4.7-GCCcore-12.2.0) + * [x] $CFGS/m/make/make-4.3-GCCcore-12.2.0.eb (module: devel/make/4.3-GCCcore-12.2.0) + * [x] $CFGS/t/Tcl/Tcl-8.6.12-GCCcore-12.2.0.eb (module: lang/Tcl/8.6.12-GCCcore-12.2.0) + * [x] $CFGS/p/pkgconf/pkgconf-1.8.0.eb (module: devel/pkgconf/1.8.0) + * [x] $CFGS/s/SQLite/SQLite-3.39.4-GCCcore-12.2.0.eb (module: devel/SQLite/3.39.4-GCCcore-12.2.0) + * [x] $CFGS/o/OpenSSL/OpenSSL-1.1.eb (module: system/OpenSSL/1.1) + * [x] $CFGS/l/libevent/libevent-2.1.12-GCCcore-12.2.0.eb (module: lib/libevent/2.1.12-GCCcore-12.2.0) + * [x] $CFGS/c/cURL/cURL-7.86.0-GCCcore-12.2.0.eb (module: tools/cURL/7.86.0-GCCcore-12.2.0) + * [x] $CFGS/d/DB/DB-18.1.40-GCCcore-12.2.0.eb (module: tools/DB/18.1.40-GCCcore-12.2.0) + * [x] $CFGS/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb (module: lang/Perl/5.36.0-GCCcore-12.2.0) + * [x] $CFGS/a/Autoconf/Autoconf-2.71-GCCcore-12.2.0.eb (module: devel/Autoconf/2.71-GCCcore-12.2.0) + * [x] $CFGS/a/Automake/Automake-1.16.5-GCCcore-12.2.0.eb (module: devel/Automake/1.16.5-GCCcore-12.2.0) + * [x] $CFGS/a/Autotools/Autotools-20220317-GCCcore-12.2.0.eb (module: devel/Autotools/20220317-GCCcore-12.2.0) + * [x] $CFGS/n/numactl/numactl-2.0.16-GCCcore-12.2.0.eb (module: tools/numactl/2.0.16-GCCcore-12.2.0) + * [x] $CFGS/u/UCX/UCX-1.13.1-GCCcore-12.2.0.eb (module: lib/UCX/1.13.1-GCCcore-12.2.0) + * [x] $CFGS/l/libfabric/libfabric-1.16.1-GCCcore-12.2.0.eb (module: lib/libfabric/1.16.1-GCCcore-12.2.0) + * [x] $CFGS/l/libffi/libffi-3.4.4-GCCcore-12.2.0.eb (module: lib/libffi/3.4.4-GCCcore-12.2.0) + * [x] $CFGS/x/xorg-macros/xorg-macros-1.19.3-GCCcore-12.2.0.eb (module: devel/xorg-macros/1.19.3-GCCcore-12.2.0) + * [x] $CFGS/l/libpciaccess/libpciaccess-0.17-GCCcore-12.2.0.eb (module: system/libpciaccess/0.17-GCCcore-12.2.0) + * [x] $CFGS/u/UCC/UCC-1.1.0-GCCcore-12.2.0.eb (module: lib/UCC/1.1.0-GCCcore-12.2.0) + * [x] $CFGS/n/ncurses/ncurses-6.3.eb (module: devel/ncurses/6.3) + * [x] $CFGS/g/gettext/gettext-0.21.1.eb (module: tools/gettext/0.21.1) + * [x] $CFGS/x/XZ/XZ-5.2.7-GCCcore-12.2.0.eb (module: tools/XZ/5.2.7-GCCcore-12.2.0) + * [x] $CFGS/p/Python/Python-3.10.8-GCCcore-12.2.0-bare.eb (module: lang/Python/3.10.8-GCCcore-12.2.0-bare) + * [x] $CFGS/b/BLIS/BLIS-0.9.0-GCC-12.2.0.eb (module: numlib/BLIS/0.9.0-GCC-12.2.0) + * [x] $CFGS/o/OpenBLAS/OpenBLAS-0.3.21-GCC-12.2.0.eb (module: numlib/OpenBLAS/0.3.21-GCC-12.2.0) + * [x] $CFGS/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb (module: tools/libarchive/3.6.1-GCCcore-12.2.0) + * [x] $CFGS/l/libxml2/libxml2-2.10.3-GCCcore-12.2.0.eb (module: lib/libxml2/2.10.3-GCCcore-12.2.0) + * [x] $CFGS/c/CMake/CMake-3.24.3-GCCcore-12.2.0.eb (module: devel/CMake/3.24.3-GCCcore-12.2.0) + * [ ] $CFGS/h/hwloc/hwloc-2.8.0-GCCcore-12.2.0.eb (module: system/hwloc/2.8.0-GCCcore-12.2.0) + * [ ] $CFGS/p/PMIx/PMIx-4.2.2-GCCcore-12.2.0.eb (module: lib/PMIx/4.2.2-GCCcore-12.2.0) + * [x] $CFGS/o/OpenMPI/OpenMPI-4.1.4-GCC-12.2.0.eb (module: mpi/OpenMPI/4.1.4-GCC-12.2.0) + * [x] $CFGS/f/FlexiBLAS/FlexiBLAS-3.2.1-GCC-12.2.0.eb (module: lib/FlexiBLAS/3.2.1-GCC-12.2.0) + * [x] $CFGS/g/gompi/gompi-2022b.eb (module: toolchain/gompi/2022b) + * [x] $CFGS/f/FFTW.MPI/FFTW.MPI-3.3.10-gompi-2022b.eb (module: numlib/FFTW.MPI/3.3.10-gompi-2022b) + * [x] $CFGS/s/ScaLAPACK/ScaLAPACK-2.2.0-gompi-2022b-fb.eb (module: numlib/ScaLAPACK/2.2.0-gompi-2022b-fb) + * [x] $CFGS/f/foss/foss-2022b.eb (module: toolchain/foss/2022b) + * [ ] $CFGS/h/HPL/HPL-2.3-foss-2022b.eb (module: tools/HPL/2.3-foss-2022b) +== Temporary log file(s) /tmp/eb-lzv785be/easybuild-ihga94y0.log* have been removed. +== Temporary directory /tmp/eb-lzv785be has been removed. +``` +Let's try to install it (remove the `-D`): + +``` bash +# Select the one matching the target software set version +(node)$ eb HPL-2.3-foss-2022b.eb -r +``` +From now on, you should be able to see the new module. + +```bash +(node)$ module spider HPL +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + tools/HPL: tools/HPL/2.3-foss-2022b +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + Description: + HPL is a software package that solves a (random) dense linear system in double precision (64 bits) arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available implementation of the High Performance Computing Linpack Benchmark. + + + This module can be loaded directly: module load tools/HPL/2.3-foss-2022b + + Help: + + Description + =========== + HPL is a software package that solves a (random) dense linear system in double precision (64 bits) + arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available + implementation of the High Performance Computing Linpack Benchmark. + + + More information + ================ + - Homepage: https://www.netlib.org/benchmark/hpl/ + +``` + + +**Tips**: When you load a module `` generated by Easybuild, it is installed within the directory reported by the `$EBROOT` variable. +In the above case, you will find the generated binary in `${EBROOTHPL}/`. + + + + + + +## Installing softwares with [Spack](ihttps://spack.io/) * To do this, please clone the Spack GitHub repository into a `SPACK_ROOT` which is defined to be on a your project directory, i.e., `/shared/project/`.