


This workshop provides a high-level overview of the important concepts to consider when attempting to improve the performance of compute-intensive applications. It will provide information on the underlying hardware, the system software and provide advice on available techniques for performance optimisation. The concepts will be demonstrated with hands-on examples.
-
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.
This workshop provides an in-depth analysis of the factors which affect the performance of compute-intensive applications. The concepts will be demonstrated with hands-on examples.
- Introduction and brief summary of topics from Optimisation Techniques Part I
- Further information on the hardware architecture
- Sockets, Cores, Caches and NUMA
- InfiniBand network
- Arithmetic intensity and the roofline model
- Process and thread affinity
- Advanced compiler options
- Requirements for vectorizable loops
- Architecture-specific optimisation
- Precision and reproducibility
- Options for correctness checking and debugging
- MPI Optimisation
- Gathering communication statistics
- Improving MPI communication
- 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)
- Familiarity with topics covered by Optimisation Techniques I
After this course, a user should have a good 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.