Week 8: Overview
This week we’ll be focusing on speeding up our code by taking advantage of parallelism, i.e. splitting up a problem and giving different pieces to different processors. In these notes we’ll introduce the following concepts:
- What is parallel programming?
- Why do we need parallel programming?
- What are shared- and distributed-memory parallelism?
- What are weak and strong scaling?
- An introduction to OpenMP
- Parallelising loops
- Reductions
- Data sharing
- Thread control
- Schedules
- Parallelising nested loops
- OpenMP example: Fractals
- Cache Performance in Shared Memory
- Summary