Container Tutorial

Overview

Rescale supports the use of software packages known as containers that are used in high performance computing to bundle application tools and their dependencies, licensing information, and instructions needed to execute on any given architecture. Common benefits of using containers include application portability, security, collaboration, and sometimes performance.

In the HPC and Rescale context, containers simplify application development and deployment for organizations by bringing them into the cloud environment for access to greater scale and better performance, using the latest computing architectures. Containers also make it easier for IT organizations to better support, manage, and secure a variety of in-house applications. 

Advanced container capabilities include:

  • Multi-node high performance support for Singularity and Apptainer containers; Docker container support for single node applications
  • ARM architecture support for the latest Singularity versions (3.9.6)
  • High-performance networking, such as InfiniBand using Open MPI
  • Container publishing via Rescale Templates for collaboration and standardization
  • NVIDIA GPU-optimized containers for seamless integration of world-class AI applications

Singularity Container Example

Singularity containers are a tool for packaging up applications and running them on various host systems reproducibly. Singularity can import most Docker containers without issue and can be easily deployed as a user application that can run without any administrative privileges.

As of version 2.3, Singularity supports running containers that also use GPUs running CUDA applications, making it a useful choice for running packaged deep learning jobs.


Singularity Software Settings

The “–nv” flag in the command line above instructs Singularity to pass through the host GPU interface to the container, enabling CUDA applications to run inside. This particular example runs the TensorFlow CNN benchmarks in a container on one or more GPUs.