从朴素循环到硬件极限:GEMM / GEMV 高性能算子优化指南

GEMM 与 GEMV 看起来都只是乘加: GEMM: C = alpha * A * B + beta * C GEMV: y = alpha * A * x + beta * y 但二者的最佳实现完全不同。GEMM 可以反复复用矩阵块,通常有机会逼近计算峰值;GEMV 中矩阵元素通常只读一次,往往受内存带宽限制。高性能算子的第一步不是写 SIMD 或 CUDA,而是先判断瓶颈究竟在哪里。 本文给出一条从正确基线走向高性能内核的完整路线。重点不是某段固定代码,而是每一步为什么有效、如何验证,以及何时应该停止优化。 一、先建立性能上限 1. 计算量 对于矩阵尺寸: A: M × K B: K × N C: M × N GEMM 约执行: FLOPs = 2 * M * N * K GEMV 是 N = 1 的特殊形态: FLOPs = 2 * M * K 乘法和加法各算一次浮点操作。 ...

2026年8月26日 · 6 分钟 · Hellokitty