- 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
 
 - 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.