@@ -15,7 +15,8 @@ It is important to be familiar with these terms, so we'll briefly cover them one
15
15
## Toolchains
16
16
17
17
A * 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.
19
20
20
21
We refer to the different parts of a toolchain as ** toolchain components** .
21
22
@@ -52,7 +53,7 @@ The toolchain concept also maps nicely on the Programming Environment concept in
52
53
Programming Environment. Each `` PrgEnv-* `` module in fact provides a full toolchain in a
53
54
typical Cray PE installation, except for the FFTW library. Note that systems could configure
54
55
the 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,
56
57
the BLAS, LAPACK and ScaLAPACK libraries by the `` cray-libsci `` module (for CPU-only nodes)
57
58
and the FFTW library through the `` cray-fftw `` module.
58
59
@@ -66,11 +67,11 @@ organised in a hierarchy.
66
67
The ** ` system ` toolchain** is a special case which corresponds to using the compilers and libraries
67
68
* provided by the operating system* , rather than using toolchain components that were installed using EasyBuild.
68
69
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
70
71
to build a set of toolchain compilers and its dependencies, since the versions of the system compilers
71
72
and libraries are beyond the control of EasyBuild, which could affect the reproducibility of the installation.
72
73
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
74
75
other EasyBuild toolchain hierarchies.
75
76
76
77
@@ -82,7 +83,7 @@ because they are widely adopted by the EasyBuild community.
82
83
The ` foss ` toolchain consists of all open source components (hence the name:
83
84
"FOSS" stands for Free & Open Source Software): [ GCC] ( https://gcc.gnu.org/ ) , [ Open MPI] ( https://www.open-mpi.org/ ) , [ OpenBLAS] ( https://www.openblas.net/ ) ,
84
85
[ 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 )
86
87
is used as the BLAS library, with OpenBLAS and LAPACK as the backend.
87
88
88
89
The ` intel ` toolchain consists of the
@@ -102,11 +103,13 @@ A[SYSTEM] --> B[GCCcore];
102
103
B --> C[GCC];
103
104
B --> D[iccifort];
104
105
C --> 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;
110
113
```
111
114
112
115
More 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
116
119
117
120
## EasyBuild framework
118
121
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:
120
123
the EasyBuild framework, easyblocks and Easyconfig files.
121
124
122
125
The EasyBuild * framework* consists of a set of Python modules organised in packages (`` easybuild.framework `` ,
@@ -169,20 +172,19 @@ EasyBuild.
169
172
170
173
Some easyconfig parameters are ** mandatory** . The following parameters * must* be defined in * every* easyconfig file:
171
174
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;
176
178
177
179
Other easyconfig parameters are ** optional** : they can be used to provide required information,
178
180
or to control specific aspects of the installation procedure performed by the easyblock.
179
181
180
182
Some commonly used optional easyconfig parameters include:
181
183
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;
186
188
187
189
If no value is specified for an optional easyconfig parameter, the corresponding default value will be used.
188
190
@@ -278,6 +280,9 @@ There are three main types of dependencies for computer software:
278
280
279
281
EasyBuild currently doesn't treat link-time dependencies differently from run-time dependencies
280
282
and 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.)
281
286
282
287
---
283
288
0 commit comments