Optimisation Techniques I

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.

Speaker: Nick Wilson (Fujitsu)

11 January 2021

Virtual

Overview

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.

 

Speaker: Nick Wilson (Fujitsu)

  1. Introduction
    1. Strategies and motivations for performance optimisation
    2. Performance characteristics of common application types
  2. Concepts related to parallelism and application scaling
    1. Vectorization, Threading, Message Passing
    2. Strong scaling and weak scaling
  3. Hardware overview
    1. CPU and memory hierarchy
    2. GPGPU
  4. Compilers & Libraries
    1. Available compilers and performance libraries
    2. Common compiler options
  5. Introduction to parallel filesystems
    1. Overview of GPFS and Lustre
    2. Relative performance characteristics
  6. Tuning of MPI applications
  1.  A valid user account on NSCC system, ASPIRE1
  2.  Laptop for use in hands-on sessions
  3.  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.