-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
181 lines (149 loc) · 5.58 KB
/
index.html
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
<!doctype html>
<html>
<head>
<title>The napoleon web site</title>
<meta charset="UTF-8">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<h1>Welcome to <code>napoleon</code>!</h1>
<p>
This is a general-purpose experimentation/development server for
the <a href="http://hiperfit.dk">HIPERFIT</a> research centre.
</p>
<div id="left-column">
<p>
<img src="hiperfit-logo.png"
alt="HIPERFIT logo"
id="logo">
</p>
<h2>Getting an account</h2>
<p>
If you want an account on <code>napoleon</code>, please send an email
to <code>[email protected]</code> with your desired user name
and <a href="https://help.github.com/articles/generating-ssh-keys/">your
public SSH key</a>. For security reasons, password-based login is
explicitly <em>not</em> permitted.
</p>
<p>
The <code>napoleon</code> webserver has been configured with user
directories such that URL <code>napoleon.hiperfit.dk/~<em>user</em></code>
is mapped to the folder <code>/home/<em>user</em>/public_html</code>.
</p>
<h2>Creating an account</h2>
<p>
If Troels is unavaiable or grumpy, anyone with <code>root</code> access
can add new acounts as well. This is unfortunately not a fully automated
process. You can can use the YaST tool via <code>sudo yast2</code>, but
it is probably easier to just use the Unix commands directly. First, add
the user:
</p>
<kbd>
$ sudo useradd -m -g video <em>username</em>
</kbd>
<p>
The <kbd>-g video</kbd> part is for GPU access, and can be skipped
if the user does not intend to use the GPUs.
</p>
<p>
Since <code>napoleon</code> does not permit password-pased login,
you will then have to create an <code>authorized_keys</code> file
and enter their public key:
</p>
<kbd>
$ sudo -u <em>username</em> mkdir -p /home/<em>username</em>/.ssh/ <br>
$ sudo -u <em>username</em> emacs /home/<em>username</em>/.ssh/authorized_keys
</kbd>
<p>
That should be it.
</p>
<h2>Updating this website</h2>
<p>
This is a static website
maintained <a href="https://github.com/HIPERFIT/napoleon">on Github</a>.
Every hour, a cronjob (<kbd>crontab -e</kbd>) running as
the <code>napoleon</code> user will perform a <kbd>git pull</kbd> to
synchronise.
</p>
</div>
<div id="right-column">
<h2>Hardware specifications</h2>
<ul>
<li>
Two AMD Opteron 6274 processors, each with 16 cores. Fairly bad
sequential performance and
extreme <a href="https://en.wikipedia.org/wiki/Non-uniform_memory_access">NUMA
behaviour.</a>.
</li>
<li>
128 GiB of RAM.
</li>
<li>
Two NVIDIA GeForce GTX 690 cards, each containing two physical GPUs.
Terrible double-precision performance.
</li>
<li>
One AMD FireGL 8100 graphics card, which has a lot of very fast memory
and excellent double-precision performance.
</li>
<li>
Permanent storage:
<ul>
<li>128GiB SSD used for the root partition.</li>
<li>Old 1TiB disk used for ancillary storage (<code>/hiperfit</code>).</li>
<li>New 6TiB disk used for <code>/home</code>.</li>
</ul>
<strong>None of this is automatically backed up.</strong>
</li>
</ul>
<h2>System setup</h2>
<p>
<code>napoleon</code> runs OpenSUSE (42.1 as of this writing), as this was
the GNU/Linux distribution preferred by the IT department at the faculty of
SCIENCE at the time the server was installed.
</p>
<p>
The setup of <code>napoleon</code> is mostly conventional, although the
GPU driver setup is a little strange:
</p>
<ul>
<li>
Having both the NVIDIA kernel modules (<code>nvidia</code>
and <code>nvidia_uvm</code>) and the AMD kernel module
(<code>fglrx</code>) loaded is no problem.
</li>
<li>
Neither is having two (or more) OpenCL ICDs. These are simply stored in
the <code>/etc/OpenCL/vendors/</code> directory.
</li>
<li>
<em>However</em>, the AMD OpenCL ICD goes grovelling
for <code>libGL.so</code> libraries and tries to load whatever it finds
for OpenCL/OpenGL-interoperability, presumably under the assumption that
they contain an AMD OpenGL implementation.
</li>
<li>
They do not.
</li>
<li>
In fact, it will eventually find the NVIDIA-supplied <code>libGL</code>
libraries and get horribly confused. This generally manifests as OpenCL
initialisation function locking up at runtime.
</li>
<li>
NVIDIAs <code>libGL.so</code> comes from the
package <code>x11-video-nvidiaG04</code>. For reasons that are no doubt
magical in nature, this is also the package that contains the
critical <code>libnvidia-compiler.so</code> library, so it is not
possible to merely remove <code>x11-video-nvidiaG04</code> - at least
not if you still want to run OpenCL programs on NVIDIA.
</li>
<li>
At this point, the impatient PhD student manning <code>napoleon</code>
got frustrated and simply deleted every file whose name
resembled <code>libGL.so</code> from the system. If you ever need to
reinstall <code>napoleon</code>, or wish to setup a multi-vendor
GPU-machine (don't), try something similar.
</li>
</ul>
</div>
</html>