Software Compatibility#

e4s-cl wraps itself around a MPI command and inserts a container launch before the command is run. This implies an understanding of both the process launcher and the container technology to use. This section details the software e4s-cl was developped for and tested with.

Container backends#

Introduction#

During a launch command, a list of required files will be computed on each target node, and bound to a container spawned on those nodes. Container backends are the container technologies e4s-cl is able to use.

apptainer, podman, shifter and singularity are supported. The docker backend can be enabled by installing e4s-cl with the docker extra feature.

Most of the container backends have some degree of configuration available to them. Configuration is done by setting the corresponding values in the backends section of the configuration file, or by passing a given environment variable.

An option passed in the environment will override the same option set in the configuration file.

apptainer#

apptainer support is achieved using its command line interface. apptainer has to be installed on the system and available for it to be used by e4s-cl.

The configuration file section for apptainer is backends/apptainer. The available options are:

Configuration variable

Environment variable

Type

Default

Description

executable

E4S_CL_APPTAINER_EXECUTABLE

String

""

Path to the apptainer executable to use.

options

E4S_CL_APPTAINER_OPTIONS

List

[]

Options to pass to the spawned apptainer process.

run_options

E4S_CL_APPTAINER_EXEC_OPTIONS

List

[]

Options to pass to the exec command of the spawned apptainer process.

docker#

docker support

docker support in HPC is limited at best. Due to its architecture, it will most likely not work with your MPI implementation. To enable docker support from e4s-cl, install with the docker extra enabled.

docker support is achieved using the docker-py module. The docker daemon has to be installed and running on the system to be accessed.

There are no configuration options for the docker backend.

Warning

Using docker with MPI

Several MPI implementations expect their processes to inherit opened file descriptors; because of docker’s client-daemon architecture, this is not possible. To use docker images with MPI, it is encouraged to used podman.

podman#

podman support is achieved using its command line interface. podman has to be installed on the system and available for it to be used by e4s-cl.

The configuration file section for podman is backends/podman. The available options are:

Configuration variable

Environment variable

Type

Default

Description

executable

E4S_CL_PODMAN_EXECUTABLE

String

""

Path to the podman executable to use.

options

E4S_CL_PODMAN_OPTIONS

List

[]

Options to pass to the spawned podman process.

run_options

E4S_CL_PODMAN_RUN_OPTIONS

List

[]

Options to pass to the run command of the spawned podman process.

shifter#

The shifter container technology is an interesting case, as it offers much of what e4s-cl is trying to propose, but in a much more restrictive way.

Warning

shifter MPI modules

Some MPI libraries will be configured as modules for shifter and imported automatically. You might not need e4s-cl ! Check the configuration file in /etc/shifter/udiRoot.conf to see if the MPI library you are trying to use is imported.

Warning

Binding files with shifter

shifter is the only container backend that does not support binding files to the container. shifter also forbids binding directories to certain locations, like /etc. This is circumvented by e4s-cl by copying all required libraries in a temporary directory, then binding it to the container. Files are ignored.

The configuration file section for shifter is backends/shifter.

Configuration variable

Environment variable

Type

Default

Description

executable

E4S_CL_SHIFTER_EXECUTABLE

String

""

Path to the shifter executable to use.

options

E4S_CL_SHIFTER_OPTIONS

List

[]

Options to pass to the spawned shifter process.

singularity#

singularity support is achieved using its command line interface. singularity has to be installed on the system and available for it to be used by e4s-cl.

The configuration file section for singularity is backends/singularity. The available options are:

Configuration variable

Environment variable

Type

Default

Description

executable

E4S_CL_SINGULARITY_EXECUTABLE

String

""

Path to the singularity executable to use.

options

E4S_CL_SINGULARITY_OPTIONS

List

[]

Options to pass to the spawned singularity process.

run_options

E4S_CL_SINGULARITY_EXEC_OPTIONS

List

[]

Options to pass to the exec command of the spawned singularity process.

Other container backends#

More container technologies can be supported. Create an issue on github or write a dedicated module in e4s_cl/cf/containers. Refer to e4s_cl/cf/containers/__init__.py for details.

Process launchers#

The following process managers were successfully tested with e4s-cl:

  • The stock mpirun of multiple MPI distributions;

  • LLNL’s SLURM using srun;

  • CRAY’s ALPS using aprun;

  • IBM’s JSM using jsrun.

Support implies the automatic detection of parameters. If a launcher is not supported, use the ‘--’ syntax to separate launcher and process arguments.

Additional options can be configured through the configuration file or the environment:

Configuration variable

Environment variable

Type

Default

Description

launcher_options

E4S_CL_LAUNCHER_OPTIONS

List

[]

List of options to pass to the launcher