Course/Event Essentials
Training Content and Scope
Other Information
The C++ programming language is a systems-level language pervasive in many areas including scientific computing. This complex language provides users with a multitude of approaches to solving complex tasks, but not all programming paradigms or approaches are equal in terms of performance.
This 'back-to-basics' training shifts slightly away from over-abstraction or potential overuse of libraries and focuses primarily on performance through the use of the language itself. We show significant speedups are possible through several key principles:
- Having some understanding of the hardware (bandwidth, latency, caches)
- Data-Oriented Programming versus Object-Oriented Programming
- Vectorization and parallelization
- Compiler and how to get the most out of it
By the end of the training you will have some intuition on performance and what affects it, as well as pointers for improving performance in your own projects.
Whether your goal is shortening the calculation time of your simulations/workloads or enabling solutions which are otherwise impractical, extracting the most out of the available hardware is a key skill. This training provides an introduction to this topic with a few exploratory trips into the core details.
Target audience:
Intermediate level, some experience with C++ is recommended
Anyone with an interest in performance-critical applications