Blame

10d7dc Dave LeBlanc 2026-11-12 16:13:03
Singularity updated on Thu Nov 12 16:12:23 2026
1
# Singularity
2
3
Since there is a pressing need for the use of containers in a specific way, this document will begin limited to that specific context, and then branch from there.
4
5
## Why Singularity and not Docker?
6
7
Docker is a fine virtual abstraction system, however it requires administrator privileges to run.
8
Further, once an image is running, Docker's default preference is to have input and output resources relevant to the container _within_ the container itself.
9
[Singularity](https://en.wikipedia.org/wiki/Apptainer) overcomes these two issues by running images as the user envoking them, and then exposing the local filesystem on the host from within the running container.
10
More detailed information can be found [here](https://sylabs.io/guides/3.3/user-guide/quick_start.html#overview-of-the-singularity-interface).
11
12
> [!Note]
13
> Singularity has changed names and now can be known as Apptainer.
14
> Command-line references should work with both, however `singularity` as a command may be deprecated later.
15
> For current operation, use `apptainer`.
16
> https://github.com/apptainer/singularity/blob/master/README.md
17
18
### Build a container
19
20
In this contextual need, we would like to be able to run [Tensorflow](https://www.tensorflow.org/learn).
21
Singularity will allow us to obtain an existing container from a Singularity Container Library, a Singularity Hub, or a Docker Hub. In this particular case of Tensorflow, we'll download one of NVidia's premade Docker containers, which Singularity will convert into its own format.
22
First, we need to obtain access to NVidia's library of Docker containers, located here:
23
[Nvidia NGC](https://ngc.nvidia.com/catalog/containers)
24
25
This is initially done by requesting access through the [Create Account](https://ngc.nvidia.com/signup) link.
26
Once an account is granted, the [API key](https://ngc.nvidia.com/setup/api-key) is needed.
27
28
Once the API key is obtained, set it usable in the shell:
29
30
```
31
export SINGULARITY_DOCKER_USERNAME=$oauthtoken
32
export SINGULARITY_DOCKER_PASSWORD=<API key>
33
```
34
35
Now you may log into the Nvidia NGC and browse for containers.
36
In this example, we'll download [Tensorflow](https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow).
37
There, it lists the container as:
38
```
39
nvcr.io/nvidia/tensorflow:19.09-py3
40
```
41
42
By default, singularity will write the entire container into your home directory and then the container will be specific to your account, hidden, and available only to you.
43
To avoid that, we'll write it to a file instead, in Singularity Image Format (SIF).
44
So, for singularity, we will *pull* the image as such:
45
```
46
singularity pull tf-19.09-py3.sif docker://nvcr.io/nvidia/tensorflow:19.09-py3
47
```
48
49
Singularity will then download each blob-layer in the `tensorflow:19.09-py3` tag, and cache it into your home directory.
50
```
51
INFO: Converting OCI blobs to SIF format
52
INFO: Starting build...
53
Getting image source signatures
54
Copying blob sha256:35c102085707f703de2d9eaad8752d6fe1b8f02b5d2149f1d8357c9cc7fb7d0a
55
25.45 MiB / 25.45 MiB [====================================================] 1s
56
Copying blob sha256:251f5509d51d9e4119d4ffb70d4820f8e2d7dc72ad15df3ebd7cd755539e40fd
57
34.54 KiB / 34.54 KiB [====================================================] 0s
58
Copying blob sha256:8e829fe70a46e3ac4334823560e98b257234c23629f19f05460e21a453091e6d
59
848 B / 848 B [============================================================] 0s
60
Copying blob sha256:6001e1789921cf851f6fb2e5fe05be70f482fe9c2286f66892fe5a3bc404569c
61
162 B / 162 B [============================================================] 0s
62
Copying blob sha256:109c7cec1178b6d77b59e8715fe1eae904b528bb9c4868519ff5435bae50c44c
63
8.63 MiB / 8.63 MiB [======================================================] 0s
64
<sniped for brevity>
65
Copying blob sha256:df0616c98153f10db5b05626f314000ced06fb127a6cfaac37ff325d11488327
66
452 B / 452 B [============================================================] 0s
67
Copying blob sha256:7828d14d7927458867242e0274e706b1c902eb6b1207e5a28337a7fbc6400e17
68
209.76 KiB / 209.76 KiB [==================================================] 0s
69
Copying blob sha256:ae4e96299b2fca5dc08edbde4061cfdf25c313954a7d46a32dfc701af4e0edf6
70
9.64 KiB / 9.64 KiB [======================================================] 0s
71
Copying config sha256:ad94fc3cd170246d925f8c5aa8000b3e6cbe645d30ff185bf87b40cee8f41d32
72
33.55 KiB / 33.55 KiB [====================================================] 0s
73
Writing manifest to image destination
74
Storing signatures
75
INFO: Creating SIF file...
76
INFO: Build complete: /home/leblancd/.singularity/cache/oci-tmp/52706b896af93123eb7f894f9671bbd31a1cabd15943aa3334eb7af3a710d262/tensorflow_19.09-py3.sif
77
```
78
79
Now our container file is complete:
80
```
81
rwxrwxr-x 1 leblancd supergroup 3.3G Oct 4 18:39 tf-19.09-py3.sif
82
```
83
84
### Cache
85
86
Before we move on, note that singularity also stored the SIF file in the user's cache, in the home directory (there is now a 3.3G file there, with overhead).
87
You can view what is stored in the cache:
88
```
89
>singularity cache list
90
NAME DATE CREATED SIZE TYPE
91
tensorflow_19.09-py3.s 2019-10-04 18:39:01 3.45 GB oci
92
93
There 1 containers using: 3.45 GB, 68 oci blob file(s) using 3.70 GB of space.
94
Total space used: 7.15 GB
95
```
96
97
Clearing the cache is equally simple.
98
99
```
100
>singularity cache clean -a
101
```
102
Removes all images in the cache (with the -a parameter).
103
104
105
By default, Singularity caches pulled files in your homedirectory with a structure as:
106
```
107
$HOME/.singularity/cache/library
108
$HOME/.singularity/cache/oci
109
$HOME/.singularity/cache/oci-tmp
110
```
111
112
One can change the default location of the cache by setting `SINGULARITY_CACHEDIR` to your desired location, for example (in bash shell):
113
```
114
echo $SINGULARITY_CACHEDIR
115
116
export $SINGULARITY_CACHEDIR=/tmp/leblancd_sing_cache
117
118
echo $SINGULARITY_CACHEDIR
119
/tmp/leblancd_sing_cache
120
```
121
122
### Build a container from scratch
123
124
Now lets say we built this image but discovered it is lacking software that we need.
125
We have a few options at this point, depending on how permanent we would like the software to be.
126
One solution would be to build a new image from the image we pulled and built locally (above).
127
For updated detailed information, refer to https://docs.sylabs.io/guides/latest/user-guide/build_a_container.html.
128
129
### Interacting with the Container
130
#### exec
131
132
To run the container we just built, we need to decide how we would like to execute it.
133
We can *exec* on the container, which will run a command inside the container:
134
```
135
>singularity exec tf-19.09-py3.sif cat /etc/os-release
136
NAME="Ubuntu"
137
VERSION="18.04.3 LTS (Bionic Beaver)"
138
ID=ubuntu
139
ID_LIKE=debian
140
PRETTY_NAME="Ubuntu 18.04.3 LTS"
141
VERSION_ID="18.04"
142
HOME_URL="https://www.ubuntu.com/"
143
SUPPORT_URL="https://help.ubuntu.com/"
144
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
145
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
146
VERSION_CODENAME=bionic
147
UBUNTU_CODENAME=bionic
148
```
149
150
This will execute any command from within the container, and then immediately exit.
151
152
#### shell
153
154
We can also obtain a *shell* within the container:
155
```
156
>singularity shell tf-19.09-py3.sif
157
Singularity tf-19.09-py3.sif:/tmp> ls -al
158
total 3366992
159
drwxrwxrwt 10 root root 4096 Oct 4 18:45 .
160
drwxr-xr-x 1 leblancd supergroup 80 Oct 4 18:51 ..
161
-rwxrwxr-x 1 leblancd supergroup 3447758848 Oct 4 18:39 tf-19.09-py3.sif
162
```
163
164
Notice that the current working directory is `/tmp`, which is not inside the container.
165
166
When Singularity executes, it attempts to make available all your existing filespaces, such as your homedirectory, and any common directories existing on the physical host (such as `/tmp`).
167
Only the files and directories inside the container are exposed over the filespace of the physical host. This makes it rather easy to write any output from the container to the local filesystem, or to an NFS mounted homedirectory.
168
169
Now that we're interactively running the container, we can attempt to execute Tensorflow.
170
```
171
>Singularity tf-19.09-py3.sif:/tmp> python
172
Python 3.6.8 (default, Aug 20 2019, 17:12:48)
173
[GCC 8.3.0] on linux
174
Type "help", "copyright", "credits" or "license" for more information.
175
Could not open PYTHONSTARTUP
176
FileNotFoundError: [Errno 2] No such file or directory: '/etc/pythonstart'
177
>>> import tensorflow as tf
178
2019-10-04 18:57:01.232584: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
179
>>> hello = tf.constant('Testing TF')
180
>>> sess = tf.Session()
181
2019-10-04 18:57:40.770169: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Could not dlopen library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs
182
2019-10-04 18:57:40.770224: E tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit: UNKNOWN ERROR (303)
183
2019-10-04 18:57:40.773897: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: ml-login3
184
2019-10-04 18:57:40.773919: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: ml-login3
185
2019-10-04 18:57:40.773959: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:200] libcuda reported version is: Not found: was unable to find libcuda.so DSO loaded into this program
186
2019-10-04 18:57:40.774016: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:204] kernel reported version is: 435.21.0
187
2019-10-04 18:57:40.789291: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2494100000 Hz
188
2019-10-04 18:57:40.794142: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x4c48fa0 executing computations on platform Host. Devices:
189
2019-10-04 18:57:40.794172: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): <undefined>, <undefined>
190
>>>
191
```
192
193
Uh oh. The container couldn't locate the CUDA library necessary to execute the Tensorflow Python module in the container.
194
195
#### nv
196
197
This is because when the singularity shell was launched, it was not made aware of any NVidia software, and did not map any NVidia drivers/devices into the container.
198
This is easily remedied with the _--nv_ parameter.
199
```
200
>singularity shell --nv tf-19.09-py3.sif
201
Singularity tf-19.09-py3.sif:/tmp> python
202
Python 3.6.8 (default, Aug 20 2019, 17:12:48)
203
[GCC 8.3.0] on linux
204
Type "help", "copyright", "credits" or "license" for more information.
205
>>> import tensorflow as tf
206
2019-10-04 19:00:12.417390: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
207
>>> hello = tf.constant('Testing TensorF')
208
>>> sess = tf.Session()
209
2019-10-04 19:00:38.980743: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcuda.so.1
210
2019-10-04 19:00:39.767134: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
211
name: TITAN RTX major: 7 minor: 5 memoryClockRate(GHz): 1.77
212
pciBusID: 0000:84:00.0
213
2019-10-04 19:00:39.767193: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
214
2019-10-04 19:00:39.825552: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10
215
2019-10-04 19:00:39.854719: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcufft.so.10
216
2019-10-04 19:00:39.868698: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcurand.so.10
217
2019-10-04 19:00:39.929108: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusolver.so.10
218
2019-10-04 19:00:39.944015: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusparse.so.10
219
2019-10-04 19:00:40.054598: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
220
2019-10-04 19:00:40.057032: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
221
2019-10-04 19:00:40.072683: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2494100000 Hz
222
2019-10-04 19:00:40.077704: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x50cd760 executing computations on platform Host. Devices:
223
2019-10-04 19:00:40.077723: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): <undefined>, <undefined>
224
2019-10-04 19:00:40.172994: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x50d0e80 executing computations on platform CUDA. Devices:
225
2019-10-04 19:00:40.173041: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): TITAN RTX, Compute Capability 7.5
226
2019-10-04 19:00:40.174405: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
227
name: TITAN RTX major: 7 minor: 5 memoryClockRate(GHz): 1.77 pciBusID: 0000:84:00.0
228
2019-10-04 19:00:40.174453: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
229
2019-10-04 19:00:40.174511: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10
230
2019-10-04 19:00:40.174548: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcufft.so.10
231
2019-10-04 19:00:40.174585: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcurand.so.10
232
2019-10-04 19:00:40.174619: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusolver.so.10
233
2019-10-04 19:00:40.174680: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcusparse.so.10
234
2019-10-04 19:00:40.174719: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
235
2019-10-04 19:00:40.177149: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
236
2019-10-04 19:00:40.180107: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
237
2019-10-04 19:00:42.739483: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix:
238
2019-10-04 19:00:42.739536: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0
239
2019-10-04 19:00:42.739545: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0: N
240
2019-10-04 19:00:42.742016: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device
241
(/job:localhost/replica:0/task:0/device:GPU:0 with 22756 MB memory) -> physical GPU
242
(device: 0, name: TITAN RTX, pci bus id: 0000:84:00.0, compute capability: 7.5)
243
>>> a = tf.constant(10)
244
>>> b = tf.constant(25)
245
>>> sess.run(a+b)
246
35
247
```
248
249
#### Container Reuse
250
251
Now, we have built a container from NVidia, and demonstrated it as working, *can someone else use our container*?
252
_Yes_, as long as you don't need to write anything into the container space, because the container will be mounted __read-only__ by default.
253
This is likely expected behavior, as it seems undesirable to create a container that allows anyone to write files, creating unforeseen entropy into the otherwise pristine container.
254
Regarding our example Tensorflow container above, it remains usable as __read-only__ since we are not modifying the binaries/scripts involved in running Tensorflow itself, and any data input or output can live safely and be accessed outside the container.
255
Consider the following example:
256
257
We have a very simple (example) Python script:
258
```
259
>cat helloworld.py
260
261
import tensorflow as tf
262
hello = tf.constant('Hello, TF!')
263
sess = tf.Session()
264
print(sess.run(hello))
265
```
266
267
That is in the current directory with our Tensorflow container:
268
```
269
-rw-rw-r-- 1 leblancd supergroup 101 Oct 4 19:30 helloworld.py
270
-rwxrwxr-x 1 leblancd supergroup 3.3G Oct 4 18:39 tf-19.09-py3.sif
271
```
272
273
We can use our `helloworld.py` script like so:
274
```
275
>singularity exec --nv ./tf-19.09-py3.sif python ./helloworld.py
276
2019-10-09 17:34:30.078770: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
277
name: TITAN RTX major: 7 minor: 5 memoryClockRate(GHz): 1.77 pciBusID: 0000:84:00.0
278
...snip...
279
2019-10-09 17:34:30.373594: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
280
2019-10-09 17:34:30.388525: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2494100000 Hz
281
2019-10-09 17:34:30.393509: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x56378c0 executing computations on platform Host. Devices:
282
2019-10-09 17:34:30.393530: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): <undefined>, <undefined>
283
2019-10-09 17:34:30.488286: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x5637f30 executing computations on platform CUDA. Devices:
284
2019-10-09 17:34:30.488342: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): TITAN RTX, Compute Capability 7.5
285
2019-10-09 17:34:30.489712: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
286
name: TITAN RTX major: 7 minor: 5 memoryClockRate(GHz): 1.77 pciBusID: 0000:84:00.0
287
...snip...
288
2019-10-09 17:34:30.492309: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
289
2019-10-09 17:34:30.495275: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
290
2019-10-09 17:34:33.013974: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix:
291
2019-10-09 17:34:33.014043: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0
292
2019-10-09 17:34:33.014054: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0: N
293
2019-10-09 17:34:33.016631: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device
294
(/job:localhost/replica:0/task:0/device:GPU:0 with 22756 MB memory) -> physical GPU
295
(device: 0, name: TITAN RTX, pci bus id: 0000:84:00.0, compute capability: 7.5)
296
b'Hello, TF!'
297
```
298
299
Likewise, redirecting output as:
300
```
301
>singularity exec --nv ./tf-19.09-py3.sif python ./helloworld.py >> OUTPUT
302
...snip...
303
2019-10-09 17:59:52.089016: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326]
304
Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 22756 MB memory)
305
-> physical GPU (device: 0, name: TITAN RTX, pci bus id: 0000:84:00.0, compute capability: 7.5)
306
>
307
```
308
309
Then our `OUTPUT` file will be:
310
```
311
>ls -l
312
total 3367004
313
-rw-rw-r-- 1 leblancd supergroup 101 Oct 9 17:30 helloworld.py
314
-rw-rw-r-- 1 leblancd supergroup 14 Oct 9 17:59 OUTPUT
315
-rwxrwxr-x 1 leblancd supergroup 3447758848 Oct 9 17:09 tf-19.09-py3.sif*
316
317
>cat OUTPUT
318
b'Hello, TF!'
319
```
320
321
#### Instances
322
323
So far, we have run our container with `shell` or `exec` which runs the container in the foreground, meaning the running container terminates when we exit, either by quitting from the `shell` or by the end of execution from `exec`.
324
We can, however, _detach_ a container and run it as a "service".
325
In Singularity terms, this is called an *instance*.
326
```
327
>singularity instance start --nv ./tf-19.09-py3.sif Tensorflow
328
329
INFO: instance started successfully
330
```
331
332
Now the instance is running, and we can launch however many as we like, though each instance needs a unique name.
333
```
334
>singularity instance start --nv ./tf-19.09-py3.sif tensorflow
335
INFO: instance started successfully
336
>singularity instance start --nv ./tf-19.09-py3.sif tensorflow2
337
INFO: instance started successfully
338
```
339
340
To review what instances we have running:
341
342
```
343
>singularity instance list
344
INSTANCE NAME PID IMAGE
345
Tensorflow 52226 /tmp/tf-19.09-py3.sif
346
tensorflow 52358 /tmp/tf-19.09-py3.sif
347
tensorflow2 52407 /tmp/tf-19.09-py3.sif
348
```
349
350
> [!Note]
351
> We launched our instances with `--nv`, to expose the NVidia devices/drivers to the instances we launch (you cannot do this after the container instance is already running).
352
353
Now, to access (or "attach") to the running instances, we can use `exec` or `shell` as before, but target the _instance_ like so:
354
355
```
356
>singularity shell instance://tensorflow2
357
Singularity tf-19.09-py3.sif:/tmp> nvidia-smi
358
Wed Oct 9 18:24:58 2019
359
+-----------------------------------------------------------------------------+
360
| NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 |
361
|-------------------------------+----------------------+----------------------+
362
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
363
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
364
|===============================+======================+======================|
365
| 0 TITAN RTX Off | 00000000:84:00.0 Off | N/A |
366
| 21% 35C P0 N/A / N/A | 0MiB / 24220MiB | 0% Default |
367
+-------------------------------+----------------------+----------------------+
368
369
+-----------------------------------------------------------------------------+
370
| Processes: GPU Memory |
371
| GPU PID Type Process name Usage |
372
|=============================================================================|
373
| No running processes found |
374
+-----------------------------------------------------------------------------+
375
```
376
377
Finally, to terminate our instances:
378
379
```
380
>singularity instance stop Tensorflow
381
Stopping Tensorflow instance of /tmp/tf-19.09-py3.sif (PID=52226)
382
```
383
384
Or:
385
386
```
387
>singularity instance stop -a