17/01/2019 - 09.00 - 13.00
Attention to the quality of code in terms of its computational efficiency is a rather important aspect of using HPC system effectively.In the introduction, we will cover how to quantify performance, and how to dimension computations to ensure optimal use of the compute resources.
In order to write efficient scientific code, the developer should be familiar with a number of important aspects of modern CPU architecture.The impact of the NUMA memory architecture, vectorization and out-of-order execution will be discussed. The NUMA memory architecture also has its impact at the level of a compute node, while the interconnect properties will determine performance of distributed applications.Several tools will help the developer to profile his application to discover performance hot spots, and make informed decisions on how to improve the efficiency of the code, or the use of resources.
Participants have a good working knowledge of a programming language such as C, C++, or Fortran. Some knowledge of multithreaded programming and distributed programming with MPI are required as well.