20 February 2019
9:00 am - 5:00 pm
CIT Auditorium Information Technology, Level 2 2 Engineering Drive 4 National University of Singapore Singapore 117584

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.

1. Introduction
a. Strategies and motivations for performance optimisation
b. Performance characteristics of common application types
2. Concepts related to parallelism and application scaling
a. Vectorization, Threading, Message Passing
b. Strong scaling and weak scaling
3. Hardware overview
a. CPU and memory hierarchy
b. GPGPU
4. Compilers & Libraries
a. Available compilers and performance libraries
b. Common compiler options
5. Introduction to parallel filesystems
a. Overview of GPFS and Lustre
b. 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.

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.

1.Introduction and brief summary of topics from Optimisation Techniques Part I
2. Further information on the hardware architecture
a.  Sockets, Cores, Caches and NUMA
b.  InfiniBand network
3. Arithmetic intensity and the roofline model
4. Process and thread affinity
5. Advanced compiler options
a. Requirements for vectorizable loops
b. Architecture-specific optimisation
c. Precision and reproducibility
d. Options for correctness checking and debugging
6. MPI Optimisation
a. Gathering communication statistics
b. Improving MPI communication

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