Skip to content

Using EESSI

Using the software installations provided by the EESSI CernVM-FS repository software.eessi.io is fairly straightforward.

Let's break it down step by step.

0) Is EESSI available?

First, check whether the EESSI CernVM-FS repository is available on your system.

Try checking the contents of the /cvmfs/software.eessi.io directory with the ls command:

$ ls /cvmfs/software.eessi.io
README.eessi  host_injections  versions

If you see an error message like "No such file or directory", then either the CernVM-FS client is not installed on your system, or the configuration for the EESSI repository is not available. In that case, you may want to revisit the Accessing a CernVM-FS repository section, or go through the Troubleshooting section.

Don't be fooled by autofs (click to expand)

The /cvmfs directory may seem empty at first, because CernVM-FS repositories are automatically mounted as they are accessed via autofs.

So rather than just using "ls /cvmfs/" to check which CernVM-FS repositories are available on your system, you should try to directly access a specific repository as shown above for EESSI with ls /cvmfs/software.eessi.io .

For more information on various aspects of mounting of CernVM-FS repositories, see the CernVM-FS documentation.

1) Initialise shell environment

If the EESSI repository is available, you can proceed to preparing your shell environment for using a particular version of EESSI by sourcing the provided initialisation script by running the source command:

$ source /cvmfs/software.eessi.io/versions/2023.06/init/bash
Found EESSI repo @ /cvmfs/software.eessi.io/versions/2023.06!
archdetect says x86_64/amd/zen2
Using x86_64/amd/zen2 as software subdirectory.
Using /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2/modules/all as the directory to be added to MODULEPATH.
Found Lmod configuration file at /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2/.lmod/lmodrc.lua
Initializing Lmod...
Prepending /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2/modules/all to $MODULEPATH...
Environment set up to use EESSI (2023.06), have fun!
Details on changes made to the shell environment (click to expand)

The initialisation script is a simple bash script that changes a couple of environment variables:

  • A set of $EESSI_* environment variables is defined;
  • The $PS1 environment variable that specifies the shell prompt is updated to indicate that your shell session has been initialised for EESSI;
  • The location of the tools provided by the EESSI compatibility layer are prepended to the $PATH environment variable;
  • Lmod, which is included in the EESSI compatibility layer, is initialised to ensure that the module command is defined, and that the Lmod spider cache that is included in the EESSI software layer is picked up;
  • The location to the software installations that are optimised for the CPU microarchitecture of the client system is prepended to the $MODULEPATH environment variable by running a "module use" command.

Note how the CPU microarchitecture is being auto-detected, which determines which path that points to a set of environment module files is used to update $MODULEPATH.

This ensures that the modules that will be loaded provide access to software installations from the EESSI software layer that are optimised for the system you are using EESSI on.

2) Load module(s)

After initialising your shell environment for using EESSI, you can start exploring the EESSI software layer using the module command.

Using module avail (or ml av), you can check which software is available. Without extra arguments, module avail will produce an overview of all available software. By passing an extra argument you can filter the results and search for specific software:

$ module avail tensorflow

----- /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2/modules/all -----

    TensorFlow/2.13.0-foss-2023a

To start using software you should load the corresponding environment module files using module load (or ml). For example:

$ module load TensorFlow/2.13.0-foss-2023a

A module load command usually does not produce any output, but it updates your shell environment to make the software ready to use.

For more information on the module command, see the User Guide for Lmod.

3) Use software

After loading a module, you should be able to use the corresponding software.

For example, after loading the TensorFlow/2.13.0-foss-2023a module, you can start a Python session and play with the tensorflow Python package:

$ python
>>> import tensorflow as tf
>>> tf.__version__
'2.13.0'

Keep in mind that you are using a Python installation provided by the EESSI software layer here, not the Python version that may be provided by your client OS:

$ command -v python
/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2/software/Python/3.11.3-GCCcore-12.3.0/bin/python
Initial start-up delay (click to expand)

You may notice a bit of "lag" initially when starting to use software provided by the EESSI software layer.

This is expected, since CernVM-FS may need to first download the files that are required to run the software you are using.

You should not observe any significant start-up delays anymore when running the same software shortly after, since then CernVM-FS will be able to serve the necessary files from the local client cache.


(next: Getting support for EESSI)