Singularity: Prepackaged Science

Singularity
Singularity

Singularity is container software designed for High Performance Computing, allowing for full control of the user's environment. You can "swap out" the operating system on the host for one you control. For example, Crane, Tusker, and Sandhills all run the operating system CentOS 6. Traditionally, if a piece of software is distributed for another operating system, such as Ubuntu, then the user would have to rebuild the software for CentOS. With Singularity, the user could simply use an Ubuntu singularity image to run the software without having to rebuild.

Singularity is also used to distribute software. Since the host’s operating system does not matter when using Singularity, it is an excellent method of distributing universal software that can run anywhere. Researchers on the Open Science Grid, a nationally distributed compute and storage resource, use Singularity to run jobs uniformly across hosts of different configurations.

The Holland Computing Center has put together documentation on how to use Singularity on our clusters. Usually, it's as simple as running the singularity command within your job:

module load singularity
singularity exec docker://unlhcc/spades spades.py <SPAdes arguments>

With this command, you are able to run the SPAdes genome assembly software without having to install or build any software, or configure a special environment for it.

Many people use Singularity to run Docker containers. Docker is a widely used and developed container technology that is used to host services. It has many tools to create and modify the Docker images, as well as a large community of containers available. By using Docker images, Singularity is able to leverage this much larger community of containers in addition to those specially made for Singularity while maintaining the higher security offered by Singularity. In addition, Docker offers containers that are open and free to the public in their hosted library called Docker Hub. The Hub contains thousands of containers that can be used with Singularity.

HCC has created several Singularity containers for the HCC community. They are publicly distributed on our Docker Hub account: https://hub.docker.com/u/unlhcc/.

Some of the software we have packaged includes:

  • DREAM3D
  • SPAdes
  • Macaulay2
  • CUDA (Ubuntu): Ubuntu 16.04.1 LTS w/CUDA 8.0
  • TensorFlow GPU
If you would like to see additional software added to our Docker containers, please complete a Software Request Form and indicate you would like to use Singularity. If you have any questions or need help establishing a Singularity workflow, please contact us at hcc-support@unl.edu and we would be happy to help!