Programming Modern Multicore Processors
TimeMonday, July 298:30am - 5pm
DescriptionModern processors such as Intel's Scalable Xeon line, AMD's EPYC architecture, ARM's ThunderX2 design, and IBM’s Power9 architecture are scaling out rather than up and increasing in complexity. Because the base frequencies for the large core count chips hover somewhere between 2-3 GHz, researchers can no longer rely on frequency scaling to increase the performance of their applications. Instead, developers must learn to take advantage of the increasing core count per processor and learn how to eke out more performance per core.
To achieve good performance on modern processors, developers must write code amenable to vectorization, be aware of memory access patterns to optimize cache usage, and understand how to balance multi-process programming (MPI) with multi-threaded programming (OpenMP). This tutorial will cover the basics of vectorization, multi-threaded programming, memory affinity, load balancing, and hybrid execution. We will also provide an overview of current HPC processors and profiling tools.
This session will include hands-on exercises that demonstrate the techniques discussed and usage of profiling tools. This tutorial is designed for experienced programmers, familiar with OpenMP and MPI, who wish to learn how to program for performance on modern architectures.