Utilize your CPU power - Cache optimizations and SIMD instructions
Performance is and always has been an important, often crucial, aspect of software development. With the emergence of multi-core systems, performance increases are now often tried to be accomplished by parallelization. However, here I will argue that in many situations even the single-core performance can be improved tremendously if one manages to utilize the full power of modern CPUs. Specifically, I will focus on the often overlooked influence of the memory bandwidth limitations. On the example of numerical algorithms I will present strategies on how to overcome these limitations and gain performance increase of a factor three. The fundamental idea is to find an optimal balance between recomputing accessing values in memory. Furthermore, I will briefly introduce Boost.SIMD and show how this library can help to efficiently utilize the SIMD registers in modern CPUs.
My goal for this session is to introduce and explain the most important performance bottlenecks and present strategies to overcome them.
Speaker: Mario Mulansky