Singularity enables users to have full control of their environment. Singularity containers can be used to package entire scientific workflows, software and libraries, and even data. This means that you don’t have to ask your cluster admin to install anything for you - you can put it in a Singularity container and run. Did you already invest in Docker? The Singularity software can import your Docker images without having Docker installed or being a superuser. Need to share your code? Put it in a Singularity container and your collaborator won’t have to go through the pain of installing missing dependencies. Do you need to run a different operating system entirely? You can “swap out” the operating system on your host for a different one within a Singularity container. As the user, you are in control of the extent to which your container interacts with its host. There can be seamless integration, or little to no communication at all. What does your workflow look like?
It’s pretty simple. You can make and customize containers locally, and then run them on your shared resource. As of version 2.3, you can even import Docker image content without sudo permissions. Singularity also allows you to leverage the resources of whatever host you are on. This includes HPC interconnects, resource managers, file systems, GPUs and/or accelerators, etc. Singularity does this by enabling several key facets:
- Encapsulation of the environment
- Containers are image based
- No user contextual changes or root escalation allowed
- No root owned daemon processes
Jump in and get started. Have a publication or recently installed or updated Singularity on your cluster? Please tell us about it!
The Next Platform has written an article on how Singularity is enabling HPC based workflows to easily be...
Penguin Computing has announced support for Singularity containers for it’s HPC Cloud (Penguin Computing On-Demand) and Scyld ClusterWare...
We are proud to announce that we have published Singularity proper! Please cite the Singularity software as: <div...