Singularity is a free, cross-platform and open-source computer program that performs operating-system-level virtualization also known as containerization. One of the main uses of Singularity is to bring containers and reproducibility to scientific computing and the high-performance computing world. The need for reproducibility requires the ability to use containers to move applications from system to system. Using Singularity containers, developers can work in reproducible environments of their choosing and design, and these complete environments can easily be copied and executed on other platforms.
History
Singularity began as an open-source project in 2015, when a team of researchers at Lawrence Berkeley National Laboratory, led by Gregory Kurtzer, developed the initial version and released it under the BSD license. By the end of 2016, many developers from different research facilities joined forces with the team at Lawrence Berkeley National Laboratory to further the development of Singularity Singularity quickly attracted the attention of computing-heavy scientific institutions worldwide:
Singularity is able to support natively high-performance interconnects, such as InfiniBand and Intel Omni-Path Architecture. Similar to the support for InfiniBand and Intel OPA devices, Singularity can support any PCIe-attached device within the compute node, such as graphic accelerators. Singularity also has native support for Open MPI library by utilizing a hybrid MPI container approach where OpenMPI exists both inside and outside the container. These features make Singularity increasingly useful in areas such as Machine learning, Deep learning and most data-intensive workloads where the applications benefit from the high bandwidth and low latency characteristics of these technologies.
Integration
traditionally already have resource management and job scheduling systems in place, so the container runtime environments must be integrated into the existing system resource manager. Using other enterprise container solutions like Docker in HPC systems would require modifications to the software. Singularity seamlessly integrates with many resource managers including: