![](https://csdnimg.cn/release/download_crawler_static/11109108/bg4.jpg)
by talking about the software itself. Singularity is the first of its kind to be easy for both users
and administrators, and was developed in collaboration by HPC administrators, developers
and research scientists alike. We started our work aiming to solve the problem of a lack of
reproducible, portable environments for science. Our hypothesis was that we could invent
data structures and accompanying methods in a software package to make this possible. We
have validated our work in the most powerful manner possible—installation and extensive use
after detailed review by supercomputer centers globally. Singularity represents a direct imple-
mentation to demonstrate the validity of this novel scientific idea. We will focus our discussion
on solving these problems and usage, and it will be followed by a comparison of Singularity to
other Linux containers that do not address the problem fully. Finally, we will provide forward
thinking about how Singularity fits in with this continually changing landscape.
The problems that singularity solves
This section will briefly overview a selection of problems that Singularity aims to solve. We
start with a comparison to currently existing solutions, followed by how Singularity addresses
concerns with these approaches, and then example use cases of such problems.
Available container solutions
While several software management solutions exist that provide flexibility and customization,
including environment modules [3] for Linux environments in production (CHOS) [38], our
focus will be on container solutions that house not just modular software, but potentially entire
systems. We provide an overview of our comparison of the leading container technologies in
(Table 1), which has been extended and adopted from [30]. As it is the case that technologies
Table 1. Container comparison.
Singularity Shifter Charlie Cloud Docker
Privilege model SUID/UserNS SUID UserNS Root Daemon
Supports current production Linux distros Yes Yes No No
Internal image build/bootstrap Yes No* No* No***
No privileged or trusted daemons Yes Yes Yes No
No additional network configurations Yes Yes Yes No
No additional hardware Yes Maybe Yes Maybe
Access to host filesystem Yes Yes Yes Yes**
Native support for GPU Yes No No No
Native support for InfiniBand Yes Yes Yes Yes
Native support for MPI Yes Yes Yes Yes
Works with all schedulers Yes No Yes No
Designed for general scientific use cases Yes Yes No No
Contained environment has correct perms Yes Yes No Yes
Containers are portable, unmodified by use Yes No No No
Trivial HPC install (one package, zero conf) Yes No Yes Yes
Admins can control and limit capabilities Yes Yes No No
In addition to the default Singularity container image, a standard file, Singularity supports numerous other formats described in the table. For each format
(except directory) the suffix is necessary for Singularity to identify the image type.
*relies on Docker
**with security implications
***depends on upstream
https://doi.org/10.1371/journal.pone.0177459.t001
Singularity: Scientific containers for mobility of compute
PLOS ONE | https://doi.org/10.1371/journal.pone.0177459 May 11, 2017 4 / 20