学习资料
InfiniTensor 冬季训练营 CPU 并行编程第二课《CPU 性能加速实战》
发表于:

2026 年 1 月 16 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营 CPU 并行编程系列第二课《CPU 性能加速实战》开讲。

本节课介绍 CPU 性能加速的实战经验,重点讲解矩阵运算的并行优化方法。

测试框架说明

1. 框架用途

针对大模型推理中的矩阵运算(如 GEMM)设计,支持并行化开发与性能测试。

2. 框架获取

  • GitHub 与 Gitee 地址(推荐Gitee以避免访问不稳定)

3. 环境配置

  • Windows 系统推荐使用 WSL(Ubuntu子系统)进行开发。
  • 配置步骤:微软商店安装 Ubuntu → 一键安装 → 虚拟环境开发。

4. 框架使用方法

  • 代码拉取:通过 git clone 下载仓库代码。
  • 构建工具:使用 xmake 进行编译,生成二进制文件。
  • 运行程序:
    • 编译:xmake
    • 运行:xmake run(自动执行可执行文件)

框架目录结构与矩阵运算实现

1. 目录结构

重点关注 kernels 文件夹:存放矩阵运算实现代码。

2. 示例代码分析

  • Naive GEMM:基础矩阵乘法实现,包含内存重排优化。
  • 性能验证:
    • 默认矩阵大小:M=N=K=512。
    • 输出指标:每次运算时间、GFLOPS(每秒十亿次浮点运算)。
    • 性能对比:通过重排优化显著提升性能。

3. 实战操作

  • 新建文件:在 kernels 文件夹中实现自定义矩阵运算代码。
  • 性能测试:通过框架自动运行并输出性能指标。

BLAS 接口标准与矩阵运算参数

1. BLAS 接口概述

  • 目的:统一矩阵运算库的接口规范,支持复杂参数(如矩阵存储方式、转置等)。

2. 关键参数

  • Leading Dimension:
    • 定义:矩阵中相邻行或列之间的元素间隔(内存连续存储的跨度)。
    • 作用:支持子矩阵运算,避免内存拷贝开销。

3. 转置与 Leading Dimension 结合

  • 转置效果:通过转置参数改变内存读取方式(行变列或列变行)。
  • 示例:若矩阵 B 为列主序且转置,则按行读取内存。

循环重排与性能优化

1. 循环重排原理

  • 内存连续访问:通过调整循环顺序提升缓存命中率。
  • 示例:Naive GEMM 中的内存重排优化。

2. 性能对比

  • 重排前:性能较低(如 Intel 处理器基准性能低)。
  • 重排后:性能显著提升(GFLOPS 增加)。

多线程并行化实现

1. 多线程概念

  • 任务分块:将矩阵运算任务分配给多个线程并行执行。

2. 代码实现

  • 线程创建:使用 C++ <thread>库动态创建线程。
  • 硬件并发数:通过std::thread::hardware_concurrency()获取可用于并行的线程数参考值。

  • 任务划分:
    • 按行分块:每个线程计算矩阵 C 的若干行。
    • 数据结构:定义gemtask结构体保存任务范围(begin、end)。
  • 线程管理:使用std::vector存储线程对象,通过emplace_back创建并启动线程。

3. 性能验证

  • 多线程 GEMM:实现多线程矩阵乘法,性能提升显著(如 4 倍于 Naive 实现)。
  • 性能波动:受系统调度影响,结果存在动态范围。

OpenMP 并行化实现

1. OpenMP 简介

  • 作用:通过编译器指令自动实现循环并行化。

2. 代码实现

  • 在循环前添加#pragma omp parallel for指令。
  • 环境配置:编译时添加-fopenmp/openmp

SIMD 指令集加速

1. 寄存器优化

  • 利用 CPU 寄存器并行处理多个数据(如 AVX 指令集处理 8 个 F32 数据)。

2. 代码实现

3. 性能验证

  • SIMD GEMM:性能提升显著,但受任务划分与对齐影响可能不稳定。

Intel MKL 库最优实现

1. MKL库简介

  • 作用:Intel 提供的优化数学库,包含高性能矩阵运算实现。

2. 代码实现

  • 函数调用:使用cblas_sgemm函数实现矩阵乘法。
  • 参数配置:指定行主序、转置、缩放系数等。

3. 性能对比

  • MKL GEMM:性能远超手动实现,具体 GFLOPS 取决于硬件与配置。

总结

本节课讲解了多线程、OpenMP、SIMD、MKL库等内容,未来课程可讲解 INT8 量化加速。

2025冬季训练营课程表

💡 学习贴士

更多细节及完整课程内容,请观看直播或查看课程回放。

链接:https://www.infinitensor.com/camp/winter2025

📚 训练营报名持续进行中

扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名