AVX Vectorization

This page is under construction and will be updated very soon.

Advanced Vector Extensions (AVX) are a set of instructions designed to improve the performance of applications by enabling Single Instruction, Multiple Data (SIMD) operations. SIMD operations allow a single operation to be performed on multiple data points simultaneously. In today’s processors, we are losing a significant amount of performance (up to 32 times) if our code is not using AVX units.

  • Using Vectorclass library : Agner Fog’s Vector Class Library (VCL) is a powerful C++ library designed to harness the power of SIMD (Single Instruction, Multiple Data) instructions on modern CPUs. It provides a set of classes and functions that allow developers to perform high-performance mathematical operations using the AVX, AVX2, and AVX-512 instruction sets. More details on using Vectorclass Library can be found here.
  • Using AVX Intrinsics : Using AVX intrinsics allows developers to directly harness the power of AVX units for performance-critical sections of their code. Intrinsics are special functions provided by compilers that map directly to AVX instructions, enabling fine-grained control over vectorized operations without writing low-level assembly code. More details on using AVX Intrinsics can be found here.
  • Writing assembly code using AVX instructions : If none of the methods work, one can directly write low-level optimized AVX code for the performance-critical code. More details on writing assembly code using AVX instructions can be found here.

References: