SIMD

分类: 高效推理与部署

SIMD

定义

一种并行计算范式,单条指令同时操作多个数据元素;在 CPU 上通过向量寄存器(AVX2、NEON 等)实现,是 LLM 边缘推理加速的关键硬件原语

数学形式

输出[0:N]=op(输入A[0:N], 输入B[0:N])\text{输出}[0:N] = \text{op}(\text{输入A}[0:N],\ \text{输入B}[0:N])

一条指令同时处理 NN 个元素(NN 取决于寄存器宽度和数据类型宽度)。

核心要点

x86 AVX2: 256-bit 寄存器,可同时处理 32 个 int8 或 8 个 float32

ARM NEON: 128-bit 寄存器,可同时处理 16 个 int8

关键指令:_mm256_shuffle_epi8(AVX2 LUT 查表)、vqtbl1q_u8(NEON LUT)、_mm256_maddubs_epi16(AVX2 MAD)

寄存器宽度限制了 Element-wise LUT 的 group size(128-bit SIMD 对三值最大 g=3)

代表工作

Bitnet.cpp: 利用 AVX2 和 NEON 实现高效三值 LLM 推理核(TL1、TL2、I2_S)

T-MAC: 基于 SIMD 的 bit-wise LUT mpGEMM 实现

相关概念

mpGEMM: SIMD 加速的主要场景

Element-wise LUT: 受 SIMD 寄存器宽度约束的推理方法