Topics and goals of this lecture include:
Basic introduction into parallelism
- The need and purpose of using parallelism
- Challenges and how to overcome them
- Architectures and application areas
- Metrics
Parallel programming APIs
- Message Passing Interface (MPI)
- OpenMP
- Pthreads
- New models: CUDA, Task-based programming, …
Optimization and tuning
- Typical bottlenecks and pitfalls
At the end of the module students are able to create parallel programs in MPI and OpenMP. They understand the performance aspects of differenct parallelization strategies and can evaluate those parallelization strategies in the context of applications. They are able to apply data dependence analysis and program transformations. They can analyze and tune the performance of parallel applications.