Next: What this Course is
Up: Introduction
Previous: Introduction
The Syllabus
Computer
Science graduates have one more reason to attend the course,
that is a preparation for the Qualifying Exam .
To this extent I will
attempt to cover most of the syllabus listed below within this course,
i.e., P573, and within the following course, Advanced Scientific Computing,
B673, to be given in the Spring semester of 1999.
B673
will cover parallel programming, parallel libraries, libraries
for Automatic Mesh Refinement codes, libraries for Finite Elements,
and so on.
Now, to the syllabus:
 1.
 Basic computer concepts and tools
 (a)

Measuring time on computers
(cf. Chapter 3)
 i.
 wall clock, user, system times
 ii.
 clock resolution and overhead of timing
 iii.
 other basic performance data: page faults,
block I/O operations, memory/space integrals
 (b)
 Data sets and characteristics: ASCII, binary, sequential,
random access, record addressability
(cf. Section 2.3)
 (c)
 floating point data: IEEE standard, range and precision,
infinity, +0 and 0, denormalised numbers,
NaN (cf. Section 2.6)
 2.
 High performance computer architecture
 (a)
 Organisation of computer memory hierarchy
 i.
 Memory banks and interleaving
 ii.
 Caches and registers
 a.
 Direct mapped, set associative
 b.
 Cache lines
 c.
 Replacement policies
 d.
 Writethrough and writeback
 e.
 Snooping
 iii.
 Enhancing data locality in codes
 iv.
 I/O architectures
 (b)
 Microprocessors
 i.
 CISC versus RISC versus EPISC (Merced)
 ii.
 Pipelining of data and instructions
 iii.
 Superscalar organisation
 iv.
 Address computations and pointers
 (c)
 Supercomputer organisation
 i.
 Vectorisation
(cf. Section 2.2.1)
 ii.
 Shared memory, distributed memory
 iii.
 Task versus data parallelism: SIMD versus MIMD
 iv.
 Topologies: mesh, hypercube, tree
 v.
 Synchronisation and communication: MPI, PVM, blocking
communication, broadcasting
 vi.
 Examples: CM2, CM5, SGI PC, Sun E10000, SP2, Cray T3E,
SGI O2000, HP Exemplar, Fujitsu VPP300, NEC SV6
 3.
 Numerical methods
overview (here the emphasis is on implications
for data structures and mapping of computations to machine
architectures and less on the mathematical analysis of the methods)
 (a)
 Common models, prototypes and implications for computer codes:
for each of these be able to discuss implementation issues,
choice of data structures, performance prediction, impact
on structure of computational kernels (cf. Chapter 3)
 i.
 heat equation: parabolic PDEs
 ii.
 wave equation: hyperbolic PDEs
 iii.
 laplace equation: elliptic PDEs
 iv.
 planetary motion: systems of ODEs
 v.
 double pendulum: chaotic ODEs
 vi.
 Nbody systems: particle methods, reduced order methods
(e.g., BarnesHut, multipole)
 vii.
 signal processing: Fourier analysis (FFT,
butterfly pattern)
 (b)
 Discretisations (cf. Chapter 3)
 i.
 time discretisation: explicit versus implicit methods
 ii.
 spatial discretisation: finite differences,
finite elements, finite volumes, spectral elements
 iii.
 uniform and quasiuniform meshes
 iv.
 irregular and adaptive meshing
 v.
 integral equation methods
 (c)
 Sparse matrix data structures and their manipulation (cf. Chapter 3)
 i.
 operations needed on sparse matrices: matrixvector
products, Gaussian elimination, triangular solvers
 ii.
 coordinatewise, compressed sparse row, modified sparse
row, jagged diagonals
 iii.
 load/store analysis and pipelining for sparse matrix data
structures
 4.
 Performance analysis and improvement
(cf. Chapter 3)
 (a)
 Profiling (cf. Chapter 3)
 i.
 instrumentation and samplingbased tools:
gprof, tprof, pixie,
CASE tools
 ii.
 interpreting profiling information
 (b)
 Benchmarking, MFLOPS, MIPS, theoretical peak performance
 (c)
 Analysing and improving performance
 i.
 using compiler optimisations
 ii.
 typical techniques: common sense, loop interchange,
unrolling, splitting, blocking, jamming
 iii.
 validation of results
 5.
 Programming language and systems issues in scientific computing (cf. Chapter 2)
 (a)
 Fortran 90 concepts: vector and array operators, modules
and interfaces, operators and when and how to use them (cf. Section 2.2.1)
 (b)

data parallelism in High Performance Fortran
 (c)
 languages for interactive
scientific experiments: Matlab, Mathematica, Maple
(cf. Section 2.6)
 (d)
 object oriented scientific programming techniques
 (e)
 understanding libraries: templates, macros, BLAS,
LAPACK, and related resources (cf. Section 2.3,
Chapter 3)
 (f)
 the role of the programmer in understanding the compiler,
preprocessors and optimisers
 (g)

programming support for large scientific data bases
(cf. Section 2.3)
 (h)
 software support for parallel programs (cf. Section 2.2.1)
 i.
 parallelising compiler techniques:
synchronisation methods, types of data dependencies,
compiler directives
 ii.
 communicating processes: PVM, MPI
 iii.
 POSIX threads (Pthreads)
 6.
 Parallelism in scientific algorithms
 (a)
 Modeling of parallelism in theory and practice
 i.
 speedup
 ii.
 parallel efficiency
 iii.
 Amdahl's law
 iv.
 computation/communication ratio
 (b)
 Parallel algorithmic techniques
 i.
 speedup
 ii.
 recursive doubling, parallel prefix
 iii.
 divideandconquer
 iv.
 domain decomposition
 v.
 data distribution (cf. Section 2.2.1,
Chapter 3)
 (c)
 parallel algorithms
 i.
 parallel sorting
 ii.
 basic linear algebra operations (cf. Chapter 3)
 iii.
 fast Fourier transforms (cf. Chapter 3)
 iv.
 particle methods (cf. Chapter 3)
The listing above is enough to make anyone sigh ``Oh me gawd''. But fear not!
Most of the stuff in the syllabus can be discussed and illustrated while
working on various projects, and this is exactly what we are going to
do. Our preference will be to learn, discover, and comment on various
points of the syllabus,
while working on a number of simple scientific applications
that will take us on a leisurely tour through cosmology, electrodynamics,
optics, and image processing. Whatever science and mathematics
will be required in these projects will be explained in sufficient (though
not overwhelming) detail.
Next: What this Course is
Up: Introduction
Previous: Introduction
Zdzislaw Meglicki
20010226