- Introduction
- Strategies and motivations for performance optimisation
- Performance characteristics of common application types
- Concepts related to parallelism and application scaling
- Vectorization, Threading, Message Passing
- Strong scaling and weak scaling
- Hardware overview
- CPU and memory hierarchy
- GPGPU
- Compilers & Libraries
- Available compilers and performance libraries
- Common compiler options
- Introduction to parallel filesystems
- Overview of GPFS and Lustre
- Relative performance characteristics
- Tuning of MPI applications
- A valid user account on NSCC system, ASPIRE1
- Laptop for use in hands-on sessions
- Familiarity with topics covered by Introductory Class (connecting to system, editing files in Linux and submitting jobs)
After this course a user should have a basic understanding of the factors which limit the performance of compute-intensive applications and knowledge of the techniques which can be used to improve that performance.