
7 月 27 日,2026 夏季 InfiniTensor 训练营 CPU 并行编程方向第二课《CPU 指令集加速实战》开讲。
前置课程《CPU 性能优化导论》讲了 CPU 性能优化核心方法,涵盖 CPU 多级缓存、局部性原理、SIMD 向量指令、多线程并行等优化手段。
本节课我们将进入实战环节。通过搭建测试框架、手写矩阵乘法(GEMM)、多线程并行、SIMD 指令集优化以及调用厂商库(MKL),感知不同优化技术带来的真实性能提升。
测试框架介绍

- 语言与构建:基于 C++ 开发,使用 xmake 作为构建工具(相比 CMake 语法更简洁,工具链支持更丰富)。
- 代码组织结构:
src/:主程序与通用源码。kernels/:核心关注目录,存放具体的矩阵乘实现代码。
- 接口标准:框架基于 BLAS 接口标准设计,只需实现核心 Kernel 即可直接接入测试。
BLAS 接口与 Leading Dimension 详解

GEMM 接口核心参数解析
- 数据存储方式:需显式指定行主序(Row-major)或列主序(Column-major),保证 A、B、C 三个矩阵存储方式一致。
- 转置选项:定义 A 和 B 是否转置,利用转置定律避免外部显式转置带来的额外内存拷贝开销。
- 维度参数 (M, N, K):对应 $C(M imes N) = A(M imes K) imes B(K imes N)$
- 缩放系数 ($alpha, eta$):支持线性变换操作;纯矩阵乘时通常设为 $alpha=1, eta=0$。
- Const 限定符:A、B 指针通常为
const,确保输入数据不被修改,符合安全开发规范。
Leading Dimension (LD)

- 定义:内存中相邻行(行主序)或相邻列(列主序)元素之间的跨度。
- 存在意义:
- 兼容分块矩阵运算(子矩阵在大矩阵中的索引)。
- 兼容硬件底层的内存对齐 Padding,例如矩阵每行可能扩展额外空间,使 Leading Dimension 大于逻辑矩阵维度,以满足 SIMD 加载和缓存访问要求。
- 避坑指南:LD 不一定等于矩阵物理维度,设置错误会导致读取数据错位;建议通过画图或编写验证代码加深理解。
实战演示
Ref GEMM (Baseline) 的问题

- 实现:三层 for 循环,最内层为 K 循环。
- 瓶颈:访问 B 矩阵时跨列读取(stride = LDB),导致严重的 Cache Miss,性能极低。
Naive GEMM 的改进

- 循环变换:将 K 循环提至外层,J 循环置于最内层。
- 访存优化:
- A 矩阵按行遍历,B 矩阵按行遍历,C 矩阵按行写入。
- 保证内存连续访问,大幅提升 Cache 命中率。
- 效果:性能提升 10~20 倍。
多线程实现思路

- 任务划分 (GEMMTask):定义
begin和end参数,按行范围切分 A 和 C 矩阵的计算任务。 - Worker 机制:每个线程执行一个 Job,处理指定行范围内的 GEMM 计算。
- 线程管理:
- 获取硬件最大线程数(设定最小值保底,如 4 线程)。
- 预创建线程池,避免重复创建销毁开销。
- 使用
join同步原语等待所有任务完成。

SIMD 指令集加速


核心操作流:
- Broadcast:将 A 的元素广播填满寄存器。
- Load:批量加载 B 和 C 的数据到 256 位寄存器。
- FMA:执行乘加融合运算 ($A imes B + C$),单次处理 8 个双精度浮点数。
- Store:将结果写回内存。
边界处理:非对齐尾部元素使用标量循环处理。
性能观察:相比多线程有进一步提升,但现代编译器自动向量化能力较强,手动优化边际收益递减。
OpenMP 并行加速

- 优势:通过预编译指令(Pragma)自动实现循环并行,代码侵入性低。
- 集成:仅需
include头文件并在 xmake 中添加编译 flag。 - 性能表现:优于简单的手写多线程实现(底层包含更多调度优化),且具备良好的可复现性。
厂商数学库 (Intel MKL)

- 特点:系统级底层优化,针对特定硬件架构极致调优。
- 使用:完全兼容 BLAS 接口,零迁移成本,仅需传入正确参数。
- 性能对比:
- 相比 OpenMP 性能翻倍。
- 相比手写优化版本提升 5~6 倍。
- 工程启示:通用算法优先使用官方成熟库,避免重复造轮子,将精力聚焦于业务特有逻辑的优化。
加入训练营
📺完整课程内容,请观看直播或查看课程回放:
InfiniTensor 官网: https://www.infinitensor.com
B站直播: InfiniTensor 官方直播间
视频号直播: InfiniTensor 视频号预约
答疑交流: 训练营官方社群⬇️

关注与交流

