|
| 1 | +# Introduction to EESSI |
| 2 | + |
| 3 | +<p align="center"><a href="https://eessi.github.io/docs"><img src="../EESSI_logo_horizontal_transparant.png" alt="EESSI logo" width="600px"/></a></p> |
| 4 | + |
| 5 | +## What is EESSI? |
| 6 | + |
| 7 | +The European Environment for Scientific Software Installations (EESSI) project is a collaboration between various |
| 8 | +(mostly) European HPC sites and partners, to build a **shared stack of scientific software installations**. |
| 9 | + |
| 10 | +The main idea is to work together and avoid duplicate work across HPC sites, even more so than we already do via |
| 11 | +EasyBuild. |
| 12 | + |
| 13 | +For end users, we want to provide a **uniform user experience** with respect to available scientific software, regardless of which system they use. |
| 14 | + |
| 15 | +EESSI should work on laptops, personal workstations, HPC clusters and in the cloud, which means we will need to support different CPUs, networks, GPUs, and so on. |
| 16 | +We hope to make this work for any Linux distribution, and maybe even macOS and Windows via [WSL](https://docs.microsoft.com/en-us/windows/wsl/), |
| 17 | +and a wide variety of CPU architectures (Intel, AMD, ARM, POWER, RISC-V). |
| 18 | + |
| 19 | +We focus point on the **performance** of the provided software installations, but also on automating the workflow |
| 20 | +for maintaining the software stack, thoroughly testing the installations, and collaborating efficiently. |
| 21 | + |
| 22 | +## Inspiration |
| 23 | + |
| 24 | +The EESSI concept is heavily inspired by Compute Canada (now [Digital Research Alliance of Canada](https://alliancecan.ca/en)) software stack, |
| 25 | +which is a shared software stack used on all 5 major national systems (and a bunch of smaller ones) in Canada. |
| 26 | + |
| 27 | +The design of the Compute Canada software stack is discussed in detail |
| 28 | +in the PEARC'19 paper [*"Providing a Unified Software Environment for Canada’s |
| 29 | +National Advanced Computing Centers"*](https://ssl.linklings.net/conferences/pearc/pearc19_program/views/includes/files/pap139s3-file1.pdf). |
| 30 | + |
| 31 | +It has also been presented at the 5th EasyBuild User Meetings ([slides](https://users.ugent.be/~kehoste/eum20/eum20_03_maxime_computecanada.pdf), [recorded talk](https://www.youtube.com/watch?v=_0j5Shuf2uE&list=PLhnGtSmEGEQidEM8MZKkOaVutgt9WmqI0)), and is [well documented](https://docs.computecanada.ca/wiki/Accessing_CVMFS). |
| 32 | + |
| 33 | +## High-level design |
| 34 | + |
| 35 | +The EESSI project consists of 3 layers. |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | +The bottom layer is the **filesystem layer**, |
| 40 | +which is responsible for distributing the software stack across clients. |
| 41 | + |
| 42 | +The middle layer is a **compatibility layer**, |
| 43 | +which ensures that the software stack is compatible with multiple different |
| 44 | +client operating systems. |
| 45 | + |
| 46 | +The top layer is the **software layer**, which contains the actual scientific software applications and their dependencies. |
| 47 | + |
| 48 | +The host OS still provides a couple of things, like drivers for network and GPU, support for shared filesystems like GPFS and Lustre, a resource manager like Slurm, and so on. |
| 49 | + |
| 50 | +### Filesystem layer |
| 51 | + |
| 52 | +<img src="../EESSI-filesystem-layer.png" alt="EESSI filesystem layer" width="400px"/> |
| 53 | + |
| 54 | +The bottom layer of the EESSI project is the **filesystem layer**, |
| 55 | +which is responsible for distributing the software stack. |
| 56 | + |
| 57 | +For this we rely on [CernVM-FS](https://cernvm.cern.ch/portal/filesystem) (or CVMFS for short), a network file system used to distribute the software to the clients in a fast, reliable and scalable way. |
| 58 | + |
| 59 | +CVMFS was created by CERN over a decade ago, specifically for the purpose of globally distributing a large software stack. For the experiments at the Large Hadron Collider, it hosts several hundred million files and directories that are distributed to the order of a 100,000 client computers. |
| 60 | + |
| 61 | +<img src="../EESSI-cvmfs-hierarchy.png" alt="CernVM-FS hierarchy" width="600px"/> |
| 62 | + |
| 63 | +The hierarchical structure with multiple caching layers (Stratum-0, Stratum-1's located at partner sites, and local caching proxies) ensures good performance with limited resources. Redundancy is provided by using multiple Stratum-1's at various sites. Since CVMFS is based on the HTTP protocol, the ubiquitous [Squid caching proxy](http://www.squid-cache.org/) can be leveraged to reduce server loads and improve performance at large installations (such as HPC clusters). Clients can easily mount the file system (read-only) via a [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) (Filesystem in Userspace) module. |
| 64 | + |
| 65 | +For a (basic) introduction to CernVM-FS, see [this presentation](https://www.youtube.com/watch?v=MyYx-xaL36k). |
| 66 | + |
| 67 | +Detailed information about how we configure CVMFS is available at |
| 68 | +[https://github.com/EESSI/filesystem-layer](https://github.com/EESSI/filesystem-layer) . |
| 69 | + |
| 70 | +### Compatibility layer |
| 71 | + |
| 72 | +<img src="../EESSI-compat-layer.png" alt="EESSI compatibility layer" width="400px"/> |
| 73 | + |
| 74 | +The middle layer of the EESSI project is the **compatibility layer**, |
| 75 | +which ensures that our scientific software stack is compatible with |
| 76 | +different (versions of) client operating systems (different Linux distributions, |
| 77 | +macOS and even Windows via [WSL](https://docs.microsoft.com/en-us/windows/wsl/)). |
| 78 | + |
| 79 | +For this we rely on [Gentoo Prefix](https://wiki.gentoo.org/wiki/Project:Prefix), |
| 80 | +by installing a limited set of Gentoo Linux packages in a non-standard location |
| 81 | +(a "prefix"), using Gentoo's package manager [Portage](https://wiki.gentoo.org/wiki/Portage). |
| 82 | + |
| 83 | +The compatible layer is maintained via our [https://github.com/EESSI/compatibility-layer](https://github.com/EESSI/compatibility-layer) GitHub repository. |
| 84 | + |
| 85 | +### Software layer |
| 86 | + |
| 87 | +<img src="../EESSI-software-layer.png" alt="EESSI software layer" width="400px"/> |
| 88 | + |
| 89 | +The top layer of the EESSI project is the **software layer**, |
| 90 | +which provides the actual scientific software installations. |
| 91 | + |
| 92 | +To install the software we include in our stack, |
| 93 | +we use [**EasyBuild**](https://easybuild.io), |
| 94 | +a framework for installing scientific software on HPC systems. |
| 95 | +These installations are optimized for a particular system architecture |
| 96 | +(specific CPU and GPU generation). |
| 97 | + |
| 98 | +To access these software installation we provide *environment module files* |
| 99 | +and use [**Lmod**](https://lmod.readthedocs.io), a modern environment modules tool which has been widely |
| 100 | +adopted in the HPC community in recent years. |
| 101 | + |
| 102 | +We leverage the [**archspec**](https://archspec.readthedocs.io) Python library |
| 103 | +to automatically select the best suited part of the software stack for |
| 104 | +a particular host, based on its system architecture. |
| 105 | + |
| 106 | +The software layer is maintained through our [https://github.com/EESSI/software-layer](https://github.com/EESSI/software-layer) GitHub repository. |
| 107 | + |
| 108 | + |
| 109 | +## Current status |
| 110 | + |
| 111 | +The EESSI project was started mid 2020, as a loose collaboration between various Dutch universities including |
| 112 | +the [University of Groningen](https://www.rug.nl/society-business/centre-for-information-technology), [VU |
| 113 | +Amsterdam](https://vu.nl/en), [TU Delft](https://www.tudelft.nl/en/), [TU Eindhoven](https://www.tue.nl/en/), and |
| 114 | +[HPC-UGent](https://www.ugent.be/hpc/en), as a follow-up of a meeting organised in Delft in early March 2020 |
| 115 | +under the impuls of [Dell Technologies](https://www.dell.com). |
| 116 | + |
| 117 | +*European Environment for Scientific Software Installations (EESSI)* was chosen as project name, and a GitHub |
| 118 | +organisation ([https://github.com/EESSI](https://github.com/EESSI)) and Slack were set up to kickstart the |
| 119 | +collaboration. Since April 2020, [online meetings](https://github.com/EESSI/meetings/wiki) have been held to share |
| 120 | +progress updates and discuss next steps. |
| 121 | + |
| 122 | +In July 2020 a proof-of-concept [EESSI pilot repository](https://eessi.github.io/docs/pilot/) was set up, |
| 123 | +to explore technical aspects, automate the process of setting up the EESSI layers and installing software into EESSI. |
| 124 | + |
| 125 | +In February 2022, an open access paper on EESSI was published (https://doi.org/10.1002/spe.3075). |
| 126 | + |
| 127 | +During the first half of 2022, the most active partners in the EESSI project worked together on a project proposal |
| 128 | +to start a EuroHPC Centre-of-Excellence in which EESSI could be developed further. The proposal was accepted, |
| 129 | +and hence the [MultiXscale](https://www.multixscale.eu/) EuroHPC Centre-of-Excellence was started. This is a 4-year |
| 130 | +project (2023-2026) that is a collaboration between EESSI and [CECAM](https://www.cecam.org/), with goals |
| 131 | +that include making EESSI ready for production, and supporting community contributions. |
| 132 | + |
| 133 | +[*next: Getting access to EESSI*](eessi-getting-access.md) - [*(back to overview page)*](index.md) |
0 commit comments