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 |
---|---|---|---|---|
|
|
String |
|
Path to the |
|
|
List |
|
Options to pass to the spawned |
|
|
List |
|
Options to pass to the |
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 |
---|---|---|---|---|
|
|
String |
|
Path to the |
|
|
List |
|
Options to pass to the spawned |
|
|
List |
|
Options to pass to the |
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 |
---|---|---|---|---|
|
|
String |
|
Path to the |
|
|
List |
|
Options to pass to the spawned |
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 |
---|---|---|---|---|
|
|
String |
|
Path to the |
|
|
List |
|
Options to pass to the spawned |
|
|
List |
|
Options to pass to the |
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 |
---|---|---|---|---|
|
|
List |
|
List of options to pass to the launcher |