-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsingularity_slides.html
More file actions
300 lines (223 loc) · 8.03 KB
/
singularity_slides.html
File metadata and controls
300 lines (223 loc) · 8.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>A Quick Singularity Overview</title>
<link rel="stylesheet" href="./reveal.js/css/reveal.css">
<!-- beige.css
black.css
blood.css
league.css
moon.css
night.css
serif.css
simple.css
sky.css
solarized.css
white.css
-->
<link rel="stylesheet" href="./reveal.js/css/theme/black.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<link rel="stylesheet" href="./singularity_slides.css">
</head>
<body>
<!-- Wrap the entire slide show in a div using the "reveal" class. -->
<div class="reveal">
<!-- Wrap all slides in a single "slides" class -->
<div class="slides">
<!-- The slides go here and each section element is an individual slide -->
<section data-markdown><textarea data-template>
<center>
<img src="eResearch_intro.jpg" width="90%">
</center>
</textarea></section>
<section data-markdown><textarea data-template>
# A Quick Singularity Overview
October 2018
<small>These slides are available as a PDF.   Email me. </small>
<!-- <img src="Universe-Cosmos-Black-Hole-Singularity-Space-3490482.jpg" width=20%> -->
</textarea></section>
<section data-markdown><textarea data-template>
## What is Singularity?
Singularity is a "container" technology. Containers can be used to package
applications and data.
- Need to run an application that is not on the cluster? Install the app in a singularity.
- Need to share your hard to install code? Put it in a singularity container, send that to your collaborator.
- Need to run a different operating system? Just "replace" the operating system
on your host with one from within a singularity.
https://www.sylabs.io/singularity/
</textarea></section>
<!-- won’t have to go through the pain of installing missing dependencies.
-->
<section data-markdown><textarea data-template>
## How does this Help Science?
- Encourages reproducibility.
- Helps portability.
- Can more easily share your own work.
- Can more easily use other people’s work.
- Can provide a way to archive complex software/workflows.
</textarea></section>
<section data-markdown><textarea data-template>
## Docker
- Docker is the most well known container platform.
- Aimed at Software Developers
- Docker is designed for the enterprise, not HPC.
- No reasonable support for MPI.
- Docker containers usually run as root.
<aside class="notes">
Message Passing Interface
</aside>
</textarea></section>
<section data-markdown><textarea data-template>
## Singularity
- Aimed at Scientists.
- Build-in support for MPI (OpenMPI, MPICH, IntelMPI).
- Maintains user credentials: inside user = outside user.
- Singularity can import and run Docker containers.
</textarea></section>
<section data-markdown><textarea data-template>
## Singularity is Safe for Sys Admins :-)
If you want to be root inside of the container,
you must first be root outside of the container.
*Hence you have to build the container outside of the HPC.*
Then copy the container over to the HPC.
*Now run the container as a normal user.*
HPC Sys Admins will be happy with this!
</textarea></section>
<section data-markdown><textarea data-template>
## Run a Different Operating System!
You can run a different operating system by "replacing" the
operating system on your host. You can run:
- Fedora, CentOS, RedHat
- Debian, Ubuntu
- Scientific Linux
- Bio-Linux
and many more ...
</textarea></section>
<section data-markdown><textarea data-template>
Example Singularity Definition File
<pre>
# Singularity definition for a Centos 7 base image.
BootStrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-7/x86_64/
%labels
Maintainer Mike Lake
Version 1.0
%help
This is a Centos 7 Singularity container for
running fortune and cowsay.
# Applications
%runscript
echo "Hello from inside the singularity of Centos 7."
fortune | cowsay
</pre>
</textarea></section>
<section data-markdown><textarea data-template>
This is how we build the Centos 7 image on our own *local* computer:
$ sudo singularity build centos7.img centos7.def
Now we copy the image to the HPC cluster:
$ scp centos7.img [email protected]:/shared/homes/xxxx/
This is how we run the Centos 7 image on the HPC:
$ singularity run centos7.img
Hello from inside the singularity of Centos 7.
</textarea></section>
<section data-markdown><textarea data-template>
## Singularity Hub
Singularity Hub is a registry for scientific linux containers.
2385 containers across 1249 collections.
From 1,500 GB sized images to small 22 MB images.
https://www.singularity-hub.org
</textarea></section>
<section data-markdown><textarea data-template>
## Singularity Hub
Singularity Hub is also a cloud build service for users.
The user pushes to Github, a builder is deployed, and the image is available to the user.
This allows a user to build and run an image from a resource
where they don’t have root access simply by using Github as a middleman.
</textarea></section>
<section data-markdown><textarea data-template>
<center>
<img src="singularity_hub_example1.png" >
</center>
</textarea></section>
<section data-markdown><textarea data-template>
<center>
<img src="singularity_hub_example2.png" >
</center>
</textarea></section>
<section data-markdown><textarea data-template>
## Main References
Singularity Home Page:
https://www.sylabs.io/singularity/
Documentation: https://www.sylabs.io/docs/
FAQ: https://www.sylabs.io/singularity/faq/
Container Registry: https://singularity-hub.org
</textarea></section>
<section data-markdown><textarea data-template>
## Other References
High-Performance Computing at the NIH: https://hpc.nih.gov/apps/singularity.html
A tutorial at Github, "Creating and running software containers with Singularity":
https://github.com/NIH-HPC/Singularity-Tutorial
PDF presentation at the HPC Developer Conference:
https://wilsonweb.fnal.gov/slides/hpc-containers-singularity-introductory.pdf
</textarea></section>
<section data-markdown><textarea data-template>
These slides are available as a PDF
Email me at [email protected]
</textarea></section>
</div>
</div>
<!--
The "fortune" program first appeared in Version 7 UNIX in 1979.
The most common version on modern systems is the BSD fortune, originally written by Ken Arnold.
Although Arnold's quote-displaying program was not the first in history, as the
BSD standard it became by far the most widely used, and its database of quotes
was voluminous.
https://en.wikipedia.org/wiki/Fortune_(Unix)
https://en.wikipedia.org/wiki/Cowsay
-->
<script src="./reveal.js/lib/js/head.min.js"></script>
<script src="./reveal.js/js/reveal.js"></script>
<script src="./reveal.js/plugin/markdown/marked.js"></script>
<script src="./reveal.js/plugin/markdown/markdown.js"></script>
<!-- If the query includes '?print-pdf', include the PDF print sheet -->
<script>
if( window.location.search.match( /print-pdf/gi ) ) {
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'reveal.js/css/print/pdf.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
}
</script>
<script>
// Required, even if empty.
Reveal.initialize({
// autoSlide: 5000,
controls: true,
controlsLayout: 'bottom-right',
keyboard: true,
progress: true,
showNotes: false,
slideNumber: true,
slideNumber: 'c/t',
transition: 'fade',
markdown: { smartypants: true },
help: true,
dependencies: [
// Zoom in and out with Alt+click
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true },
// Speaker notes
{ src: 'reveal.js/plugin/notes/notes.js', async: true },
// Code highlight
{ src: 'reveal.js/plugin/highlight/highlight.js' },
// More info https://github.com/hakimel/reveal.js#dependencies
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); }},
]
});
</script>
</body>
</html>