@@ -15,7 +15,8 @@ It is important to be familiar with these terms, so we'll briefly cover them one
1515## Toolchains
1616
1717A * compiler toolchain* (or just * toolchain* for short) is a ** set of [ compilers] ( https://en.wikipedia.org/wiki/Compiler ) ** ,
18- which are used to build software from source, together with a set of ** additional libraries** that provide further core functionality.
18+ which are used to build software from source, together with a set of ** additional libraries**
19+ with pretty standard APIs that provide further core functionality.
1920
2021We refer to the different parts of a toolchain as ** toolchain components** .
2122
@@ -52,7 +53,7 @@ The toolchain concept also maps nicely on the Programming Environment concept in
5253Programming Environment. Each `` PrgEnv-* `` module in fact provides a full toolchain in a
5354typical Cray PE installation, except for the FFTW library. Note that systems could configure
5455the contents of a `` PrgEnv-* `` module differently as the MPI library and scientific library are
55- optional. In the Cray PE, the MPI library is provided by the `` cray-mpic `` module,
56+ optional. In the Cray PE, the MPI library is provided by the `` cray-mpich `` module,
5657the BLAS, LAPACK and ScaLAPACK libraries by the `` cray-libsci `` module (for CPU-only nodes)
5758and the FFTW library through the `` cray-fftw `` module.
5859
@@ -66,11 +67,11 @@ organised in a hierarchy.
6667The ** ` system ` toolchain** is a special case which corresponds to using the compilers and libraries
6768* provided by the operating system* , rather than using toolchain components that were installed using EasyBuild.
6869
69- It used sparingly, mostly to install software where no actual compilation is done or
70+ It is used sparingly, mostly to install software where no actual compilation is done or
7071to build a set of toolchain compilers and its dependencies, since the versions of the system compilers
7172and libraries are beyond the control of EasyBuild, which could affect the reproducibility of the installation.
7273
73- On LUMI however it is used a bit more and it takes some of the functions of the `` GCCcore ` ` toolchain in
74+ On LUMI however it is used a bit more and it takes some of the functions of the ` GCCcore ` toolchain in
7475other EasyBuild toolchain hierarchies.
7576
7677
@@ -82,7 +83,7 @@ because they are widely adopted by the EasyBuild community.
8283The ` foss ` toolchain consists of all open source components (hence the name:
8384"FOSS" stands for Free & Open Source Software): [ GCC] ( https://gcc.gnu.org/ ) , [ Open MPI] ( https://www.open-mpi.org/ ) , [ OpenBLAS] ( https://www.openblas.net/ ) ,
8485[ ScaLAPACK] ( https://www.netlib.org/scalapack/ ) and [ FFTW] ( http://fftw.org/ ) .
85- In recent versions (since 2021a), [ FlexiBLAS] ( https://www.mpi-magdeburg.mpg.de/projects/flexiblas )
86+ In more recent versions (since 2021a), [ FlexiBLAS] ( https://www.mpi-magdeburg.mpg.de/projects/flexiblas )
8687is used as the BLAS library, with OpenBLAS and LAPACK as the backend.
8788
8889The ` intel ` toolchain consists of the
@@ -102,11 +103,13 @@ A[SYSTEM] --> B[GCCcore];
102103B --> C[GCC];
103104B --> D[iccifort];
104105C --> E[gompi: Adds OpenMPI];
105- D --> F[iimpi: Adds Intel MPI];
106- D --> G[imkl: Adds Intel MKL];
107- E --> H[foss: Adds OpenBLAS, LAPACK, ScaLAPACK, FFTW];
108- F --> I[intel];
109- G --> I;
106+ C --> F[gfbf: Adds FlexiBLAS, FFTW];
107+ D --> G[iimpi: Adds Intel MPI];
108+ D --> H[imkl: Adds Intel MKL];
109+ E --> I[foss: Adds ScaLAPACK];
110+ F --> I;
111+ G --> J[intel];
112+ H --> J;
110113```
111114
112115More information on these toolchains is available [ in the EasyBuild documentation] ( https://docs.easybuild.io/en/latest/Common-toolchains.html ) .
@@ -116,7 +119,7 @@ More information on these toolchains is available [in the EasyBuild documentatio
116119
117120## EasyBuild framework
118121
119- EasyBuild is written in Python and organised in three layers, represented by the three blocks in the logo:
122+ EasyBuild is written in Python and organised in three layers, represented by the three lines in the logo:
120123the EasyBuild framework, easyblocks and Easyconfig files.
121124
122125The EasyBuild * framework* consists of a set of Python modules organised in packages (`` easybuild.framework `` ,
@@ -169,20 +172,19 @@ EasyBuild.
169172
170173Some easyconfig parameters are ** mandatory** . The following parameters * must* be defined in * every* easyconfig file:
171174
172- * `` name `` and `` version `` , which specify the name and version of the software to install;
173- * `` homepage `` and `` description `` , which provide key metadata for the software;
174- * `` toolchain `` , which specifies the compiler toolchain to use to install the software (see
175- `` toolchains `` tab);
175+ * ` name ` and ` version ` , which specify the name and version of the software to install;
176+ * ` homepage ` and ` description ` , which provide key metadata for the software;
177+ * ` toolchain ` , which specifies the compiler toolchain to use to install the software;
176178
177179Other easyconfig parameters are ** optional** : they can be used to provide required information,
178180or to control specific aspects of the installation procedure performed by the easyblock.
179181
180182Some commonly used optional easyconfig parameters include:
181183
182- * `` easyblock ` ` , which specifies which (generic) easyblock should be used for the installation;
183- * `` sources `` and `` source_urls ` ` , which specify the list of source files and where to download them;
184- * `` dependencies `` and `` builddependencies ` ` , which specify the list of (build) dependencies;
185- * `` configopts `` , `` buildopts `` , and `` installopts ` ` , which specify options for the configuration/build/install commands, respectively;
184+ * ` easyblock ` , which specifies which (generic) easyblock should be used for the installation;
185+ * ` sources ` and ` source_urls ` , which specify the list of source files and where to download them;
186+ * ` dependencies ` and ` builddependencies ` , which specify the list of (build) dependencies;
187+ * ` configopts ` , ` buildopts ` , and ` installopts ` , which specify options for the configuration/build/install commands, respectively;
186188
187189If no value is specified for an optional easyconfig parameter, the corresponding default value will be used.
188190
@@ -278,6 +280,9 @@ There are three main types of dependencies for computer software:
278280
279281EasyBuild currently doesn't treat link-time dependencies differently from run-time dependencies
280282and hence has no specific easyconfig parameter for them.
283+ (Even EasyBuild 5 doesn't even though that version defaults to "rpath"-linking so that no
284+ ` LD_LIBRARY_PATH ` is needed and hence modules that do not define other variables that are
285+ needed to run a package don't need to be loaded at runtime.)
281286
282287---
283288
0 commit comments