|
|
|
Requirements
|
|
|
|
------------
|
|
|
|
EAR requires some third party libraries and headers to compile and run, in addition to the basic requirements such as the compiler and Autoconf. This is a list of these **libraries**, minimum **tested** versions and its references:
|
|
|
|
|
|
|
|
| Library | Minimum version | References |
|
|
|
|
| ----------- | --------------- |----------------------------------------------------------------|
|
|
|
|
| MPI | - | - |
|
|
|
|
| MySQL* | 15.1 | [MySQL](https://mysql.com) or [MariaDB](https://mariadb.org/) |
|
|
|
|
| PostgreSQL* | 9.2 | [PostgreSQL](https://www.postgresql.org/) |
|
|
|
|
| Autoconf | 2.69 | [Website](https://www.gnu.org/software/autoconf/autoconf.html) |
|
|
|
|
| GSL | 1.4 | [Website](https://www.gnu.org/software/gsl/) |
|
|
|
|
|
|
|
|
\* Just one of them required.
|
|
|
|
|
|
|
|
These libraries are not required, but can be used to get additional functionality or metrics:
|
|
|
|
|
|
|
|
| Library | Minimum version | References |
|
|
|
|
|--------------|-----------------|--------------------------------------------------------------------------------------------------|
|
|
|
|
| SLURM | 17.02.6 | [Website](https://slurm.schedmd.com/) |
|
|
|
|
| PBS** | 2021 | [PBSPro](https://www.altair.com.es/pbs-professional/) or [OpenPBS](https://www.openpbs.org/) |
|
|
|
|
| CUDA/NVML | 7.5 | [CUDA](https://developer.nvidia.com/cuda-zone) |
|
|
|
|
| CUPTI** | 7.5 | [CUDA](https://developer.nvidia.com/cuda-zone) |
|
|
|
|
| Likwid | 5.2.1 | [Likwid](https://github.com/RRZE-HPC/likwid) |
|
|
|
|
| FreeIPMI | 1.6.8 | [FreeIPMI](https://www.gnu.org/software/freeipmi/) |
|
|
|
|
| OneAPI/L0** | 1.7.9 | [OneAPI](https://www.intel.com/content/www/us/en/developer/tools/oneapi/overview.html#gs.0k5fbb) |
|
|
|
|
| LibRedFish** | 1.3.6 | [LibRedFish](https://github.com/DMTF/libredfish) |
|
|
|
|
|
|
|
|
\** These will be available in next release.
|
|
|
|
|
|
|
|
Also, some **drivers** has to be present and loaded in the system:
|
|
|
|
|
|
|
|
| Driver | File | Kernel version | References |
|
|
|
|
| ----------- | --------------------------------------- | -------------- | --------------- |
|
|
|
|
| CPUFreq | kernel/drivers/cpufreq/acpi-cpufreq.ko | 3.10 | [Information](https://wiki.archlinux.org/index.php/CPU_frequency_scaling) |
|
|
|
|
| Open IPMI | kernel/drivers/char/ipmi/*.ko | 3.10 | [Information](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/configuring-the-open-ipmi-driver.html) |
|
|
|
|
|
|
|
|
Lastly, the **compilers**: EAR uses C compilers. It has been tested with both Intel and GNU.
|
|
|
|
|
|
|
|
| Compiler | Comment | Minimum version | References |
|
|
|
|
| --------------------------------- | -------------------------- | --------------- | --------------- |
|
|
|
|
| GNU Compiler Collection (GCC) | For the library and daemon | 4.8.5 | [Website](https://gcc.gnu.org/) |
|
|
|
|
| Intel C Compiler (ICC) | For the library and daemon | 17.0.1 | [Website](https://software.intel.com/en-us/c-compilers) |
|
|
|
|
|
|
|
|
Compilation and installation guide summary
|
|
|
|
------------------------------------------
|
|
|
|
1. Before the installation, make sure the installation path is accessible by all the computing nodes. Do the same in the folder where you want to set the configuration files (it will be called `$(EAR_ETC)` in this guide for simplicity).
|
|
|
|
2. Generate Autoconf's `configure` program by typing `autoreconf -i`.
|
|
|
|
3. Read sections below to understand how to properly set the `configure` parameters.
|
|
|
|
4. Compile EAR components by typing `./configure ...`, `make` and `make install` in the root directory.
|
|
|
|
5. Type `make etc.install` to install the content of `$(EAR_ETC)`. It is the configuration content, but that configuration will be expanded in the next section. You have a link at the bottom of this page.
|
|
|
|
|
|
|
|
Configure options
|
|
|
|
-----------------
|
|
|
|
`configure` is based on shell variables which initial value could be given by setting variables in the command line, or in the environment. Take a look to the table with the most popular variables:
|
|
|
|
|
|
|
|
| Variable | Description |
|
|
|
|
|-------------|---------------------------------------------------------------------------------------------------------------------------------------|
|
|
|
|
| MPICC | MPI compiler. |
|
|
|
|
| CC | C compiler command. |
|
|
|
|
| MPICC_FLAGS | MPI compiler flags. |
|
|
|
|
| CFLAGS | C compiler flags. |
|
|
|
|
| CC_FLAGS | Also C compiler flags. |
|
|
|
|
| LDFLAGS | Linker flags. E.g. ‘-L\<lib dir\>’ if you have libraries in a nonstandard directory \<lib dir\>. |
|
|
|
|
| LIBS | Libraries to pass to the linker. E.g. ‘-l<library>’. |
|
|
|
|
| EAR_TMP | Defines the node local storage as 'var', 'tmp' or other tempfs file system (default: /var/ear) (you can alo use --localstatedir=DIR). |
|
|
|
|
| EAR_ETC | Defines the read-only single-machine data as 'etc' (default: EPREFIX/etc) (you can also use --sharedstatedir=DIR). |
|
|
|
|
| MAN | Defines the manual directory (default: PREFIX/man) (you can use also --mandir=DIR). |
|
|
|
|
| DOC | Defines the documentation directory (default: PREFIX/doc) (you can use also --docdir=DIR). |
|
|
|
|
| MPI_VERSION | Adds a suffix to the compiled EAR library name. Read further down this page for more information. |
|
|
|
|
| USER | Owner user of the installed files. |
|
|
|
|
| GROUP | Owned group of the installed files |
|
|
|
|
| MAKE_NAME | It adds an additional Makefile with a suffix. |
|
|
|
|
|
|
|
|
- This is an example of `CC`, `CFLAGS` and `DEBUG` variables overwriting: </br>
|
|
|
|
`./configure CC=icc CFLAGS=-g EAR_ETC=/hpc/opt/etc`
|
|
|
|
|
|
|
|
You can choose the root folder by typing `./configure --PREFIX=<path>`. But there are other options in the following table:
|
|
|
|
|
|
|
|
| Definition | Default directory | Content / description |
|
|
|
|
| --------------- | -------------------- | ------------------------------------ |
|
|
|
|
| \<*PREFIX*\> | /usr/local | Installation path |
|
|
|
|
| \<*EAR_ETC*\> | \<*PREFIX*\>/etc | Configuration files. |
|
|
|
|
| \<*EAR_TMP*\> | /var/ear | Pipes and temporal files. |
|
|
|
|
|
|
|
|
You have more installation options information by typing `./configure --help`. If you want to change the value of any of this options after the configuration process, you can edit the root Makefile. All the options are at the top of the text and its names are self-explanatory.
|
|
|
|
|
|
|
|
##### Adding required libraries installed in custom locations
|
|
|
|
The `configure` script is capable to find libraries located in custom location if a module is loaded in the environment or its path is included in `LD_LIBRARY_PATH`. If not, you can help `configure` to find SLURM, or other required libraries in case you installed in a custom location. It is necessary to add its root path for the compiler to see include headers and libraries for the linker. You can do this by adding to it the following arguments:
|
|
|
|
|
|
|
|
| Argument | Description |
|
|
|
|
|--------------------------|--------------------------------------------|
|
|
|
|
| --with-cuda=\<path\> | Specifies the path to CUDA installation. |
|
|
|
|
| --with-freeipmi=\<path\> | Specify path to FREEIPMI installation. |
|
|
|
|
| --with-gsl=\<path\> | Specifies the path to GSL installation. |
|
|
|
|
| --with-likwid=\<path\> | Specifies the path to LIKWID installation. |
|
|
|
|
| --with-mysql=\<path\> | Specify path to MySQL installation. |
|
|
|
|
| --with-pgsql=\<path\> | Specify path to PostgreSQL installation. |
|
|
|
|
| --with-pbs | Enable PBS components. |
|
|
|
|
| --with-slurm=\<path\> | Specifies the path to SLURM installation. |
|
|
|
|
|
|
|
|
* This is an example of `CC` overwriting the CUDA path specification:<br />
|
|
|
|
`./configure --with-cuda=/path/to/CUDA`
|
|
|
|
|
|
|
|
If unusual procedures must be done to compile the package, please try to figure out how `configure` could check whether to do them and contact the team to be considered for the next release. In the meantime, you can overwrite shell variables or export its paths to the environment (e.g. LD_LIBRARY).
|
|
|
|
|
|
|
|
##### Additional configure flags
|
|
|
|
Also, there are additional flags to help administrator increase the compatibility of EAR in nodes.
|
|
|
|
|
|
|
|
| Argument | Description |
|
|
|
|
|------------------|--------------------------------------------------------------------------------|
|
|
|
|
| --disable-rpath | Disables the RPATH included in binaries to specify some dependencies location. |
|
|
|
|
| --disable-avx512 | Replaces the AVX-512 function calls by AVX-2. |
|
|
|
|
| --disable-gpus | The GPU monitoring data is not allocated nor inserted in the database. |
|
|
|
|
| --disable-mpi | Compiles the non-mpi version of the library. |
|
|
|
|
|
|
|
|
Pre-installation fast tweaks
|
|
|
|
----------------------------
|
|
|
|
Some EAR characteristics can be modified by changing the value of the constants defined in `src/common/config/config_def.h`. You can open it with an editor and modify those pre-procesor variables to alter the EAR behaviour.
|
|
|
|
|
|
|
|
Also, you can quickly switch the user/group of your installation files by modifying the `CHOWN_USR/CHOWN_GRP` variables in the root Makefile.
|
|
|
|
|
|
|
|
Library distributions/versions
|
|
|
|
------------------------------
|
|
|
|
As commented in the overview, the EAR library is loaded next to the user MPI application by the [EAR Loader](EAR Loader). The library uses MPI symbols, so it is compiled by using the includes provided by your MPI distribution. The selection of the library version is automatic in runtime, but in the compiling and installation process is not required. Each compiled library has its own file name that has to be defined by the `MPI_VERSION` variable during `./configure` or by editing the root Makefile. The name list per distribution is exposed in the following table:
|
|
|
|
|
|
|
|
| Distribution | Name | MPI_VERSION variable |
|
|
|
|
| ---------------- | ------------------- | -------------------- |
|
|
|
|
| Intel MPI | libear.so (default) | it is not required |
|
|
|
|
| MVAPICH | libear.so (default) | it is not required |
|
|
|
|
| OpenMPI | libear.ompi.so | ompi |
|
|
|
|
|
|
|
|
If different MPI distributions shares the same library name, it means that its symbols are compatible between them, so compiling and installing the library one time will be enough. However, if you provide different MPI distributions to the users, you will have to compile and install the library multiple times.
|
|
|
|
|
|
|
|
Before compiling new libraries you have to install by typing `make install`. Then you can run the `./configure` again, changing the `MPICC`, `MPICC_FLAGS` and `MPI_VERSION` variables, or just opening the root `Makefile` and edit the same variables and `MPI_BASE`, which just sets the MPI installation root path. Now type `make full` to perform a clean compilation and `make earl.install`, to install only the new version of the library.
|
|
|
|
|
|
|
|
If your MPI version is not fully compatible, please contact ear-support@bsc.es. We will add compatibility to EAR and give you a solution in the meantime.
|
|
|
|
|
|
|
|
Other useful flags
|
|
|
|
------------------
|
|
|
|
You can install individual components by doing: `make eard.install` to install EAR Daemon, `make earl.install` to install EAR Library, `make eardbd.install` EAR Database Manager, `make eargmd.install` EAR Global Manager and `make commands.install` the EAR command binaries.
|
|
|
|
|
|
|
|
Installation content
|
|
|
|
--------------------
|
|
|
|
This is the list of the inner installation folders and their content:
|
|
|
|
|
|
|
|
| Root | Directory | Content / description |
|
|
|
|
| ------------- | ------------ | ------------------------------------ |
|
|
|
|
| \<*PREFIX*\> | /lib | Libraries. |
|
|
|
|
| \<*PREFIX*\> | /lib/plugins | Plugins. |
|
|
|
|
| \<*PREFIX*\> | /bin | EAR commands. |
|
|
|
|
| \<*PREFIX*\> | /bin/tools | EAR tools for coefficients. |
|
|
|
|
| \<*PREFIX*\> | /sbin | Privileged components. |
|
|
|
|
| \<*PREFIX*\> | /man | Documentation. |
|
|
|
|
| \<*EAR_ETC*\> | /ear | Configuration file. |
|
|
|
|
| \<*EAR_ETC*\> | /ear/coeffs | Coefficient files store. |
|
|
|
|
| \<*EAR_ETC*\> | /module | EAR module. |
|
|
|
|
| \<*EAR_ETC*\> | /slurm | ear.plugstack.conf. |
|
|
|
|
| \<*EAR_ETC*\> | /systemd | EAR service files. |
|
|
|
|
|
|
|
|
Fine grain tuning of EAR options
|
|
|
|
---------------------------------
|
|
|
|
Some options such as the maximum number of CPUs or GPUs supported are defined in src/common/config files. It is not recommended to modify these files but some options and default values can be set by modifying them.
|
|
|
|
|
|
|
|
Next step
|
|
|
|
---------
|
|
|
|
For a better overview of the installation process, return to our [Quick installation guide](Admin guide#quick-installation-guide).
|
|
|
|
To continue the installation, visit the [configuration page](Configuration) to set up properly the EAR configuration file and the SLURMs plugin stack file. |
|
|
|
\ No newline at end of file |