MCS 572 Spring 2006 Notes
The links below provide a summary of what was covered in class.
Part I Basic Techniques
1. Parallel Computers
- introduction -- speedup and efficiency
- scalability -- message passing computing
- types of parallel computers, clusters
2. Message-Passing Computing
- basics of MPI
- using MPI to write parallel programs
- evaluating parallel programs
- debugging and visualization
3. Embarrassingly Parallel Computations
- embarrassingly parallel computations
- static and dynamic task assignment
- Monte Carlo methods
4. Partitioning and Divide-and-Conquer Strategies
- data partitioning
and divide-and-conquer strategies
- parallel sorting methods: bucket sort
-
numerical integration on parallel computers
- the N-body problem
5. Pipelined Computations
-
pipelining to create parallel algorithms
-
adding and sorting using pipelines
-
solving triangular linear systems
6. Synchronous Computations
-
barriers to synchronize computations
-
data parallel computations and synchronous iteration
-
parallel iterative methods for linear systems
-
solving the heat distribution problem
7. Load Balancing and Termination Detection
- static and dynamic load balancing
- dynamic load balancing
- the parallel knapsack problem
- polynomial root finding
8. Programming with Shared Memory
- shared memory multiprocessor machines
- concurrent programming using threads
- parallel programming languages
- introduction to OpenMP - threads
-
parallel numerical integration with OpenMP
- performance issues
9. Distributed Shared Memory Systems and Programming
- Hybrid MPI/OpenMP programming
-
Distributed Shared Memory Systems and Programming
- guest lecture by Anton Leykin
Part II: Algorithms and Applications
- parallel sorting algorithms
- parallel numerical linear algebra
- the conjugate gradient method
- parallel FFT
Lectures 39 to 44 were reserved for
project presentations.