1. Parallel architectures
2. Parallel programming models
3. Roofline and parallel performance models
4. Designing parallel programs
5. Research challenges
This course focuses on how to program parallel computers to efficiently solve challenging problems in science and engineering, where very fast computers are required either to perform complex simulations or to analyze enormous datasets. Students will be introduced to modern machine architectures, parallel programming models, and models of parallel performance.
The course will also introduce patterns of parallelism which occur frequently in scientific applications and types of parallel communication.