- Introduction
-
Parallel machine models, parallel programming models, a parallel algorithm.
- Vector Programming I
-
Pipelining, vector architectures, vector instructions, chaining, vector
libraries, vector statements, vectorizing compilers.
- Vector Programming II
- (Exercise, Fortran Program)
Convex 3440 architecture and programming, vectorization, strip mining, loop
distribution, loop interchange, temporal and spatial parallelism.
- Designing Parallel Programs
-
Methodological design, partitioning, communication, agglomeration, mapping,
modularity, examples.
- SIMD Programming I
- (Maspar Program)
Data parallelism, SIMD architectures, Maspar MP-1 architecture and
programming.
- SIMD Programming II
- (Exercise, C Program)
Mesh algorithms, cube algorithms, mapping strategies.
- Performance of Parallel Programs
-
Speedup, efficiency, Amdahl's law, scaled speedup, Gustavson's law, load
balancing.
- Shared Memory Programming I
-
Shared memory architectures, automatic scheduling, cache policies,
synchronization mechanisms, Unix programming.
- Shared Memory Programming II
- (Exercise, C Program)
Sequent Symmetry architecture and programming, micro-tasking library, data
decomposition policies, algorithm examples.
- Message Passing Programming I
-
Distributed memory systems, workstation clusters, static interconnection
topologies, switched networks, whormhole routing.
- Message Passing Programming II
- (Exercise)
nCube/2 architecture and programming, row/column oriented algorithms,
block-oriented algorithm, mapping, Gray codes.
- Scheduling and Performance Analysis
-
Static scheduling, Graham's scheduling algorithm, deadlocks, performance
tools.