Even in scientific computing, code development often lacks a basic understanding of performance bottlenecks and relevant optimization opportunities. Textbook code transformations are applied blindly without a clear goal in mind. This course teaches a structured model-based performance engineering approach on the compute node level. It aims at a deep understanding of how code performance comes about, which hardware bottlenecks apply and how to work around them. The pivotal ingredient of this process is a model which links software requirements with hardware capabilities. Such models are often simple enough to be done with pencil and paper (such as the well-known Roofline model), but they lead to deep insights and strikingly accurate runtime predictions.
Dr. Georg Hager and Dr. Jan Eitzinger
Erlangen Regional Computing Center
Friedrich-Alexander University of Erlangen-Nuremberg, Germany
Course dates: June 11-13, 2018
I have prepared some activities to get you going. If you want to work on our exercises, download the .tar.gz file and unpack it. The Makefiles are generally prepared for the Intel compiler, so you may have to adapt the options. For the start it does not matter where you run the code. Later we will give you access to our cluster at the University of Erlangen, where we have a reliable benchmarking environment with the required tools.
You can try to tackle one of the tasks below. You may also prepare your own application code (if you have any) for analysis.