CppCon 2016: Matt P. Dziubinski “Computer Architecture, C++, and High Performance"
ฝัง
- เผยแพร่เมื่อ 4 ธ.ค. 2024
- CppCon.org
-
Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/cpp...
-
With the increase in the available computational power, the Nathan Myhrvold's Laws of Software continue to apply: New opportunities enable new applications with increased needs, which subsequently become constrained by the hardware that used to be "modern" at adoption time. C++ itself opens the access to high-quality optimizing compilers and a wide ecosystem of high-performance tooling and libraries. At the same time, simply turning on the highest optimization flags and hoping for the best is not going to automagically yield the highest performance -- i.e., the lowest execution time. The reasons are twofold: Algorithms' performance can differ in theory -- and that of their implementations can differ even more so in practice.
Modern CPU architecture has continued to yield increases in performance through the advances in microarchitecture, such as pipelining, multiple issue (superscalar) out-of-order execution, branch prediction, SIMD-within-a-register (SWAR) vector units, and chip multi-processor (CMP, also known as multi-core) architecture. All of these developments have provided us with the opportunities associated with a higher peak performance -- while at the same time raising new optimization challenges when actually trying to reach that peak.
In this talk we'll consider the properties of code which can make it either friendly -- or hostile -- to a modern microprocessor. We will offer advice on achieving higher performance, from the ways of analyzing it beyond algorithmic complexity, recognizing the aspects we can entrust to the compiler, to practical optimization of the existing code. Instead of stopping at the "you should measure it" advice (which is correct, but incomplete), the talk will be focused on providing practical, hands-on examples on how to actually perform the measurements (presenting tools -- including perf and likwid -- simplifying the access to CPU performance monitoring counters) and how to reason about the resulting measurements (informed by the understanding of the modern CPU architecture, generated assembly code, as well as an in-depth look at how the CPU cycles are spent using modern microarchitectural simulation tools) to improve the performance of C++ applications.
Slides: speakerdeck.co...
Resources: github.com/Mat...
-
Matt P. Dziubinski
Aalborg University
Research & Development
Denmark
Matt P. Dziubinski is affiliated with the Department of Mathematical Sciences, Aalborg University, Denmark and a Junior Fellow at Center for Research in Econometric Analysis of Time Series (CREATES). His fascination with computers started in the late 1980s with an 8-bit Atari. His current research interests include Quantitative Finance and High Performance Scientific Computing, with a focus on applied cross-platform parallel computing -- targeting multi-core CPUs as well as many-core GPGPUs. Practical implementation of these research ideas is made easier, more accessible, and even fun thanks to modern C++. Since 2008 Matt has also been sharing his passion introducing modern C++ to his students -- with computational applications in math, finance, statistics, and economics. C++ interests include generic programming, numerics, networking, and performance optimization -- while also enjoying learning about computer architecture in his spare time :-)
-
Videos Filmed & Edited by Bash Films: www.BashFilms.com
*-----*
Register Now For CppCon 2022: cppcon.org/reg...
*-----*
Incredible talk. The information density is through the roof!
great talk. thank You Matt! You are amazing :)
You have no idea how long it took for me to get that stuff having no idea where to look. Great job, don't worry about the pacing or else you would have to start some series of videos and that's no way to fit in time frame of cpp con.
very interesting talk. thank you :)
Great talk, nice slides.
useless slides - too small fonts, to fast switching