In High Performance Computing, performance is a major consideration. Hence it is important to understand the hardware and software properties that influence the performance of your applications. Although this is relevant for software developers, it is also useful for application users who want to understand the performance characteristics of the software they use.
Learning outcomes
When you complete this training you will be able to
- understand the scaling laws for performance;
- understand the memory architecture of modern computers;
- understand vectorization;
- understand performance pitfalls in shared memory programming;
- to profile an application using gprof and Arm MAP;
- use feedback-guided optimization.
Schedule
Total duration: 7 hours, split over two sessions.
Subject | Duration |
---|---|
introduction and motivation | 5 min. |
performance scaling and scaling laws | 45 min. |
computer architecture: memory | 60 min. |
coffee break | 10 min. |
computer architectore: vectorization | 30 min. |
profiling | 70 min. |
feedback-guided optimization | 10 min. |
conclusions and wrap-up | 10 min. |
Training materials
Slides are available in the GitHub repository, as well as example code and hands-on material.
Target audience
This training is for you if you want to develop code that efficiently uses HPC compute infrastructure, or want to tune the parameters of your application for efficiency.
Prerequisites
You will need experience programming in some programming language.
If you plan to do code optimization in a Linux or HPC environment you should be familiar with these as well.
Trainer(s)
- Geert Jan Bex (geertjan.bex@uhasselt.be)