Course overview
This course deals mostly with the low-end of parallel computing meaning parallelism from four to a few tens of cores. This is the situation that faces all programmers currently. Topics covered in the course include:
- Parallel computer architecture (what makes them different from single-threaded architecture and why do we need them)
- Parallel programming models (explicit threading, OpenMP, task-centric models)
- System software support (Operating systems and run-time systems)
- Low-level programming (synchronization, memory consistency models)
- Performance models and debugging (how can we understand performance and how to get the good performance)
- Basics of parallel programming (using the models studied)