C++Now 2021 has ended
Back To Schedule
Wednesday, May 5 • 1:30pm - 3:00pm
Adventures in SIMD-Thinking

Log in to save this to your schedule, view media, leave feedback and see who's attending!

SIMD capabilities are virtually ubiquitous in modern computing hardware, and yet much of that computing capacity often goes unused. This talk will provide a high-level overview of the SSE, AVX, and AVX-512 instruction set architecture provided by Intel microprocessors, and provide some specific examples of real-world problems where additional performance can be gained by thinking "vertically".

We'll begin with a quick, high-level description of the features provided by the SSE, AVX, and AVX-512 instruction sets. We'll then use C++ to compose a simple API employing various compiler intrinsics implementing those instruction sets. At the lowest level, the API will wrap some primitive operations, and then build some very useful basic operations (like multi-register shift) upon those primitives. We'll then build some facilities for comparison and arithmetic, and finally round out the API with functions for load and store. During all of this, we'll use C++ to provide type safety, reduce complexity, and maximize performance.

Next, we'll take a look at how this simple API can be used to improve performance for a handful of interesting problems, like sorting the values stored in a register, creating a very fast 1-D median filter, or high-speed convolution and correlation with kernels that fit within a single register.

avatar for Bob Steagall

Bob Steagall

Chief Cook and Bottle Washer, KEWB Computing

Wednesday May 5, 2021 1:30pm - 3:00pm MDT
  • Concurrency