Parallel Design Patterns
This course will present a foundation of a pattern language for parallel programming and will focus on parallel algorithm strategy patterns such as:
- Task Parallelism
- Recursive Splitting
- Geometric Decomposition
- Pipeline
- Discrete Event and implementation Strategy Patterns such as:
- Master/Worker
- Loop Parallelism
- Fork/Join
- Shared Queue
- Actors
Patterns are described on an abstract level and their implementations are explored in the tutorials. Tutorials put emphasis on creation of reusable generic implementations.
Generic applicability of a pattern implementation is demonstrated by applying it to distinct computational problems. Existing libraries (such as those from the Java SDK) are described and their design and use is discussed.
Programming exercises use C and Fortran, with MPI.