SIMD for Audio Developers
SIMD (Single Instruction, Multiple Data) is an essential feature of modern hardware and a cornerstone of audio processing. Modern CPUs provide SIMD in a variety of forms, from fixed-width instruction sets such as SSE, AVX, and NEON to the Scalable Vector Extension (SVE).
There are several ways to leverage SIMD in your audio app: relying on compiler auto-vectorisation, using libraries such as xsimd, Highway, Eigen, or JUCE's `dsp::SIMDRegister`, writing intrinsics by hand, or even dropping down to assembly. Each approach comes with different tradeoffs around portability, control, and effort. The upcoming C++26 standard adds `std::simd`, a long-anticipated abstraction that brings portable, explicit SIMD into the standard library.
In this talk, we cover what SIMD is, how it works at the hardware level, how to use it in your audio app, how the different approaches compare, and how C++26 changes the picture. While the examples are in C++, the hardware fundamentals and conceptual tradeoffs carry over to any programming language with SIMD support. Whether you are an audio developer new to using SIMD, or a seasoned expert curious about how the new `std::simd` stacks up against what you already use, there will be something here for you.
Timur Doumler
Timur Doumler is the co-host of CppCast and an active member of the ISO C++ standard committee, where he is currently co-chair of SG21, the Contracts study group. Timur started his journey into C++ in computational astrophysics, where he was working on cosmological simulations. He then moved into the audio and music technology industry, where he has spent over a decade of his career, worked on projects such as NI Kontakt and the JUCE framework, and co-founded the music tech startup Cradle. In the past, Timur also worked for JetBrains, first as a developer on CLion's C++ parser and later as a Developer Advocate for C++ developer tools. Currently, Timur lives in Finland, where he organises the monthly C++ Helsinki meetup and works as an independent C++ consultant. Timur is passionate about clean code, good tools, low latency, and the evolution of the C++ language.