向量并行

概念

SIMD(Single Instruction, Multiple Data,单指令多数据)是一种指令集扩展,允许一条指令同时对多个数据元素执行相同的操作。

现代 SIMD 指令集

指令集位宽处理器
MMX64 位Intel Pentium
SSE/SSE2128 位Intel Pentium III/4
AVX/AVX2256 位Intel Sandy Bridge/Haswell
AVX-512512 位Intel Xeon Phi/Skylake X

使用方式

编译器自动向量化

  • GCC 在 -O3 级别尝试自动向量化
  • 需要循环结构规则、无数据依赖

内建函数(Intrinsics)

__m256 v = _mm256_load_ps(data);
__m256 result = _mm256_add_ps(v, v);

内联汇编

直接编写 SIMD 汇编指令。

性能优势

  • AVX 一次可处理 8 个单精度浮点数(256位 / 32位)
  • 结合可接近
  • 对规则数据结构和循环效果最佳

相关笔记:

链接到