Performance Programming

Application performance is one of the key requirements for HPC applications.

However this is one of the more difficult requirements to satisfy:

  • Issues affecting performance often vary between different hardware and software environments. This requires performance issues to be frequently re-visited as the hardware and software environment changes.
  • Performance programming requires detailed knowledge of the underlying environment.
  • The design decisions necessary to achieve good performance are often in conflict with other desirable properties of the program.
  • After taking this course you will have a good practical understanding of the general issues and methodologies associated with designing building and refactoring codes to meet performance requirements. In addition you will have an overview of a number of subjects that are important in the understanding of performance on current systems.

The course will cover the following topics:

  • Overview of performance programming. Methodology, the optimisation cycle.
  • Designing for performance. Encapsulation as an aid to performance tuning.
  • Tools for performance programming. Profilers and code instrumentation.
  • Compilers and compiler optimisation.
  • Memory heirarchies, Memory structures and associated optimisations.
  • Performance tuning for shared memory.
  • Floating point performance. Pipelines, SIMD, vectorisation.


Our world-class systems are available for use by research and industry


View our research papers

A full list of EPCC's research papers and other outputs can be found via the University of Edinburgh's Research Explorer

Our services for business