Singularity: Difference between revisions
(Created page with "Singularity is a popular container solution for HPC systems. It natively supports GPU and high performance network under containers and is compatible with docker images. More...") |
No edit summary |
||
(14 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Portal|User}} | |||
Grid'5000 supports Singularity | Singularity is a popular container solution for HPC systems. It natively supports GPU and high performance networks in containers and is compatible with docker images. More info at: https://sylabs.io/docs/ | ||
Grid'5000 supports the Singularity containers: Singularity is available in the standard environment and it does not requires to run it as root. | |||
== Basic usage == | == Basic usage == | ||
Just run the "singularity | Just run the <code class="command">singularity</code> command to use it. It can also be run in a OAR submission (none-interactive batch job). For instance: | ||
{{Term|location=frontend| cmd=<code class="command">oarsub</code> -l core=1 "<code class="replace">/grid5000/code/bin/singularity run library://sylabsed/examples/lolcow</code>"}} | |||
{{Note|text=The full path to <code class="command">/grid5000/code/bin/singularity</code> is required for non-interactive OAR jobs}} | |||
The Singularity user documentation is available at https://sylabs.io/guides/3.5/user-guide. It describes the various ways to run programs inside a container and how to build your own container image (which requires to be root, but can be performed on your own laptop or on a Grid'5000 node using "sudo-g5k"). | |||
== | == Using docker containers with Singularity == | ||
Singularity can also be used to start docker containers. For instance: | |||
MPI programs | {{Term|location=node| cmd=<code class="command">singularity</code> run <code class="replace">docker://gentoo/stage3-amd64</code>}} | ||
== Running MPI programs in Singularity containers == | |||
MPI programs may be run in Singularity containers, by leveraging both the MPI implementation available in the host, i.e. a Grid'5000 physical node (which has a direct access to the high peformance network hardware if present), and the MPI library that must be installed inside the container. | |||
MPI programs in the Singularity container can then be started using the the mpirun command on the host. | |||
See https://sylabs.io/guides/3.5/user-guide/mpi.html for more information. | See https://sylabs.io/guides/3.5/user-guide/mpi.html for more information. | ||
For instance, to submit such MPI job under OAR, | For instance, to submit such a MPI job under OAR, assuming your avec a Singularity image named <code class="replace">my_mpi_image.sif</code> in your home directory, use: | ||
{{Term|location=frontend| cmd=<code class="command">oarsub</code> -l nodes=2 "<code class="replace">mpirun -hostfile \$OAR_NODE_FILE --mca orte_rsh_agent oarsh -- /grid5000/code/bin/singularity exec my_mpi_image.sif /opt/mpitest</code>"}} | |||
== Using | == Using GPUs in Singularity containers == | ||
GPUs available in the host can be made available inside the container by using the '''--nv''' option (for Nvidia GPUs only). | |||
For instance, to start an interactive tensorflow environment, | For instance, to start an interactive tensorflow environment with one GPU, first submit the job reserving 1 GPU: | ||
{{Term|location=frontend| cmd=<code class="command">oarsub</code> -I <code class="replace">-l gpu=1</code>}} | |||
Then on that node: | |||
{{Term|location=node| cmd=<code class="command">singularity</code> run <code class="replace">--nv docker://tensorflow/tensorflow:latest-gpu</code>}} | |||
More | More info at: https://sylabs.io/guides/3.5/user-guide/gpu.html |
Revision as of 09:00, 28 April 2020
Singularity is a popular container solution for HPC systems. It natively supports GPU and high performance networks in containers and is compatible with docker images. More info at: https://sylabs.io/docs/
Grid'5000 supports the Singularity containers: Singularity is available in the standard environment and it does not requires to run it as root.
Basic usage
Just run the singularity
command to use it. It can also be run in a OAR submission (none-interactive batch job). For instance:
The Singularity user documentation is available at https://sylabs.io/guides/3.5/user-guide. It describes the various ways to run programs inside a container and how to build your own container image (which requires to be root, but can be performed on your own laptop or on a Grid'5000 node using "sudo-g5k").
Using docker containers with Singularity
Singularity can also be used to start docker containers. For instance:
Running MPI programs in Singularity containers
MPI programs may be run in Singularity containers, by leveraging both the MPI implementation available in the host, i.e. a Grid'5000 physical node (which has a direct access to the high peformance network hardware if present), and the MPI library that must be installed inside the container.
MPI programs in the Singularity container can then be started using the the mpirun command on the host.
See https://sylabs.io/guides/3.5/user-guide/mpi.html for more information.
For instance, to submit such a MPI job under OAR, assuming your avec a Singularity image named my_mpi_image.sif
in your home directory, use:
frontend :
|
oarsub -l nodes=2 "mpirun -hostfile \$OAR_NODE_FILE --mca orte_rsh_agent oarsh -- /grid5000/code/bin/singularity exec my_mpi_image.sif /opt/mpitest " |
Using GPUs in Singularity containers
GPUs available in the host can be made available inside the container by using the --nv option (for Nvidia GPUs only).
For instance, to start an interactive tensorflow environment with one GPU, first submit the job reserving 1 GPU:
Then on that node:
More info at: https://sylabs.io/guides/3.5/user-guide/gpu.html