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 buildSetting 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 buildThe 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:
- Motion Estimation: Searching for temporal redundancies across frames.
- Intra Prediction: Analyzing spatial patterns within a single frame.
- Transforms and Quantization: Converting pixel data into frequency coefficients.
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:
- Porting and Compatibility: Testing the encoder on newer, older, or niche CPU architectures (such as RISC-V or older MIPS architectures) before SIMD optimizations have been written for them.
- Debugging and Development: Isolating compiler bugs or debugging algorithmic issues in the encoder codebase without the complexity of assembly language.
- Academic Research: Analyzing the underlying AV1 algorithms in pure, human-readable C code.