-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglossary.tex
387 lines (340 loc) · 10.8 KB
/
glossary.tex
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
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
\newglossaryentry{latex}
{
name=latex,
description={Is a mark up language specially suited
for scientific documents}
}
\newglossaryentry{far-field}{
name={far field},
description={
An set of particles in the far field are considered to be far away enough
from the particle of interest that they are suitably described by a
convergent multipole expansion.
}
}
\newglossaryentry{near-field}{
name={near field},
description={
An set of particles in the near-field are considered to violate the
the criteria for describing them with a convergence multipole expansion.
}
}
\newglossaryentry{near-neighbours}
{
name={near neighbours},
description={
Two boxes in computational tree are near neighbours if they are at the
same level of refinement, and share a boundary point.
}
}
\newglossaryentry{well-separated}
{
name={well separated},
description={
Two boxes in computational tree are near neighbours if they are at the
same level of refinement, and are not near neighbours.
}
}
\newglossaryentry{interaction-list}{
name={interaction list},
description={
Boxes which are the children of the near-neighbours of the a box's
parent box, but are not adjacent to the box itself.
}
}
\newglossaryentry{FMM}{
name={FMM},
description={
The Fast Multipole Method.
}
}
\newglossaryentry{KIFMM}{
name={KIFMM},
description={
The `Kernel Independent' Fast Multipole Method.
}
}
\newglossaryentry{post-order}{
name={post-order},
description={
In reference to the traversal of heirarchical trees, post-order traversal
is moving from the finest (leaf) level to the coarsest (root) level.
}
}
\newglossaryentry{pre-order}{
name={pre-order},
description={
In reference to the traversal of heirarchical trees, pre-order traversal
is moving from the coarsest (root) level to the finest (leaf) level.
}
}
\newglossaryentry{P2M}{
name={P2M},
description={Particle to multipole expasion operation.}
}
\newglossaryentry{M2M}{
name={M2M},
description={Translate from multipole of child box to multipole expansion
of parent box.}
}
\newglossaryentry{M2L}{
name={M2L},
description={Translate from multipole of box $A$ to local expansion
of box $B$.}
}
\newglossaryentry{L2L}{
name={L2L},
description={Translate from local of parent box to local expansion
of child box.}
}
\newglossaryentry{L2P}{
name={L2P},
description={Evaluate local of leaf box at each target particle in a leaf
box.}
}
\newglossaryentry{P2P}{
name={P2P},
description={
Evaluate particle to particle interactions directly.
}
}
\newglossaryentry{target-particles}{
name={target particles},
description={
Particles are described as targets if the potential due to a source field
is being evaluated at these particle's positions, but they themselves are
not being considered as a source for the field being evaluated. They may
or may not refer to the same set of particles as the source particles,
for example in the classic $N$-Body problem, the target particles and
the source particles are the same set.
}
}
\newglossaryentry{source-particles}{
name={source particles},
description={
Particles are described as sources if they are consifered to contribute
to the source field being evaluated at the target particles. They may
or may not refer to the same set of particles as the target particles,
for example in the classic $N$-Body problem, the target particles and
the source particles are the same set.
}
}
\newglossaryentry{task-level-parallelism}{
name={task-level parallelism},
description={
Task-level parallelism is achieved when multiple threads or processes,
running the same, or differing, code, in a multiprocessing system are
executed with the same, or differing, data.
}
}
\newglossaryentry{instruction-level-parallelism}{
name={instruction-level-parallelism},
description={
Instruction-level parallelism refers to the parallel execution of different
instructions on a specific thread or process in a multiprocessing system.
}
}
\newglossaryentry{data-level-parallelism}{
name={data-level parallelism},
description={
In a multiprocessor system, data level parallelism is achieved by
distributing data amongst different compute nodes to be executed upon
in parallel. See \textbf{CUDA}
}
}
\newglossaryentry{CUDA}{
name={CUDA},
description={
`Compute Unified Device Architecture', is a parallel computing API
designed for the development of programs for \textbf{GPU}s
}
}
\newglossaryentry{GPU}{
name={GPU},
description={
`Graphics Processing Unit', are specialised processors specifically
designed for rapid parallel execution across large blocks of data.
Generally consist of $O(10^3)$ cores, and are suited to handling
\textbf{SIMD} type instructions, such as matrix vector products.
}
}
\newglossaryentry{SIMD}{
name={SIMD},
description={
Single Instruction, Multiple Data.
}
}
\newglossaryentry{high-level-interpreted-language}{
name={high level interpreted language},
description={
A High-Level language is one that offers an API and primitive data
structures that strongly abstract from the details of the computer on
which it is being run. An interpreted language is one in which codes
are run directly via an \textit{interpreter}, rather than first being
compiled. In reality interpreted languages run in a `virtual machine',
which takes input code, transforms it to byte-code which is then translated
into machine level instructions. This approach allows for greater portability
of code, and developer productivity, at the expense of space and time overhead
in running software.
}
}
\newglossaryentry{source-densities}{
name={source densities},
description={
Source densities are associated with their respective \textbf{source particles}.
In electromagnetic problems, these would correspond to charges. In gravitational
problems, these would correspond to mass.
}
}
\newglossaryentry{equivalent-density}{
name={equivalent density},
description={
An equivalent representation of the potential generated by a discrete/continuous
distribution. This equivalent density is supported at discrete points on
an \textbf{equivalent surface}.
}
}
\newglossaryentry{equivalent-surface}{
name={equivalent surface},
description={
An equivalent surface supports equivalent density points.
}
}
\newglossaryentry{check-surface}{
name={check surface},
description={
Defines the surface at which the potential caused by source points, and
the equivalent density formulation coincide.
}
}
\newglossaryentry{check-potential}{
name={check potential},
description={
The potential calculated from source particles, or an equivalent density
distribution at a check surface.
}
}
\newglossaryentry{PDE}{
name={PDE},
description={
Partial Differential Equation.
}
}
\newglossaryentry{SVD}{
name={SVD},
description={
Singular Value Decomposition.
}
}
\newglossaryentry{FFT}{
name={FFT},
description={
Fast Fourier Transform.
}
}
\newglossaryentry{MPI}{
name={MPI},
description={
Message Passing Interface for implementing distributed memory parallelism.
Each process is given it's own local memory, and can communicate and pass
data and computational results to other processes being run in parallel.
}
}
\newglossaryentry{OpenMP}{
name={OpenMP},
description={
Open MultiProcessing is an API for implementing shared-memory parallelism.
Each process is run on a separate thread, but a global memory space is
shared.
}
}
\newglossaryentry{PyExaFMM}{
name={PyExaFMM},
description={
The Python implementation of the \textbf{KIFMM} presented as a part of this
thesis.
}
}
\newglossaryentry{object-oriented-language}{
name={Object Oriented Language},
description={
Programming paradigm in which data and methods are abstracted into
`objects'. This allows for the separation of data and logic into
structures that encapsulate their logical grouping.
}
}
\newglossaryentry{interpreted}{
name={interpreted},
description={
In reference to an interpreted programming language. Here instead of
direct compilation of source code into machine level instructions, source
code is passed to an `interpreter', which compiles a byte-code on the programmers
behalf. This byte-code is sent to a compiler as it arrives, giving the programmer
the illusion of interactive programming.
}
}
\newglossaryentry{JIT}{
name={JIT},
description={
Just-In-Time compilation ...
}
}
\newglossaryentry{key}{
name={key},
description={
In the context of space filling curves, refers to the encoded position
along the length of a curve.
}
}
\newglossaryentry{operator-matrix}{
name={operator matrix},
description={
In the context of the cached \textbf{KIFMM} operators, refers to the
matrix applied to a known source density in order to calculate an unknown
source density.
}
}
\newglossaryentry{LAPACK}{
name={LAPACK},
description={
`Linear Algebra Package', standard library for optimised numerous numerical
solvers, including for eigenvalue problems, singular value decompositions,
and linear least square problems.
}
}
\newglossaryentry{FLOPS}{
name={FLOPS},
description={
Floating Point Operations per Second, as a measure of computer performance.
}
}
\newglossaryentry{heterogenous}{
name={heterogenous},
description={
In reference to the availability of different kinds of compute units on
a single machine, typically in reference to machines containing
both CPUs and GPUs.
}
}
\newglossaryentry{apache}{
name={apache},
description={
Open source software foundation that supports core open source projects
across a diverse range of problem areas.
}
}
\newglossaryentry{JSON}{
name={JSON},
description={JavaScript Object Notation}
}
\newglossaryentry{AVX}{
name={AVX},
description={
Advanced Vector Extensions, a 256-bit or 512-bit vector register for Intel
Sandy Bridge \textbf{CPU} architectures.
}
}
\newglossaryentry{CPU}{
name={CPU},
description={Central Processing Unit}
}