31 May 2019
9:00 am - 5:00 pm
Level 17, Connexis South Tower, 1 Fusionopolis Way, Singapore 138632

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

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.