I will cover the topics below, ranging from a very gentle introduction to parallel programming to performance of parallel programs
There will be a few hands-on programming sessions that expose students to parallel programming and high performance programming experiences.
* Parallel problem solving
- It's easy! --- a quick and gentle introduction to parallel problem solving
- Some examples of parallel problem solving and programming
* Popular parallel programming models and their execution mechanisms
- OpenMP, TBB, Cilk, etc.
- parallel for and scheduling
- tasks and dynamic load balancing
- CUDA
- warps and thread blocks
- simultaneous multithreading
- MPI
* Parallelism : the source of performance
- vectorization (SIMD)
- superscalar parallelism
- multicores and many cores
- simultaneous multithreading (GPU)
* Getting high performance
- understanding the maximum performance of your CPU/GPU
- understanding the maximum performance of memory
- memory hierarchy
- caches and high bandwidth memory