Can You Run SVT-AV1 Without SIMD Instructions?

This article explores whether the SVT-AV1 encoder can be executed purely in software without relying on SIMD (Single Instruction, Multiple Data) hardware acceleration. We examine the technical feasibility of compiling and running libsvtav1 using only standard C code, discuss the configuration steps required to disable CPU extensions, and analyze the massive performance trade-offs associated with running the encoder without vectorization.

The Short Answer: Yes

It is entirely possible to run libsvtav1 purely in software without relying on SIMD instructions. While SVT-AV1 is highly optimized for modern processors using instruction sets like AVX2, AVX-512, SSE, and ARM NEON, the codebase maintains generic, pure C fallbacks for every single optimized function.

If your target processor lacks SIMD support, or if you are compiling for a highly restricted virtualized environment, the encoder will still function correctly and produce compliant AV1 bitstreams.

How to Compile SVT-AV1 Without SIMD

To run SVT-AV1 without SIMD, you must disable the assembly optimizations during the build process. SVT-AV1 uses CMake as its build system, which includes a specific configuration flag to compile only the generic C code.

To generate a build pipeline that completely excludes SIMD assembly, use the following CMake command:

cmake -DCOMPILE_C_ONLY=ON -S . -B build

Setting COMPILE_C_ONLY=ON tells the build system to ignore all x86 assembly (.asm) and ARM NEON files, relying solely on the standard C implementation. After configuring, you can build the library normally:

cmake --build build

The resulting library and executable will run on any compatible CPU architecture using standard scalar instructions.

The Performance Implications

While running SVT-AV1 without SIMD is technically feasible, the performance impact is severe. AV1 video encoding is highly parallel and mathematically intensive. It relies heavily on vector operations for tasks like:

SIMD allows a processor to perform these mathematical operations on multiple data points simultaneously. Without SIMD, the CPU must process these data points sequentially using scalar instructions.

In real-world testing, disabling SIMD optimizations in SVT-AV1 typically results in a 10x to 50x slowdown in encoding speed depending on the CPU architecture, input resolution, and preset level. An encode that takes minutes with AVX2 or AVX-512 enabled can take hours when restricted to pure C code.

Use Cases for Non-SIMD Execution

Because of the extreme performance penalty, running SVT-AV1 without SIMD is not recommended for production environments. However, it remains highly valuable for specific use cases: