You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何62×62矩阵乘法比64×64矩阵乘法更慢?

为什么62×62矩阵乘法比64×64的慢约10%?

在Google Colab中运行以下代码后,发现62×62矩阵间的乘法运算比64×64矩阵的乘法运算慢约10%,请问这是什么原因?

import torch
import timeit

a, a2 = torch.randn((62, 62)), torch.randn((62, 62))
b, b2 = torch.randn((64, 64)), torch.randn((64, 64))

def matmuln(c,d):
    return c.matmul(d)

print(timeit.timeit(lambda: matmuln(a, a2), number=1000000)) # 13.864160071000015
print(timeit.timeit(lambda: matmuln(b, b2), number=1000000)) # 12.539578468999991

核心原因解析

  • 硬件对齐与向量优化:现代CPU/GPU的SIMD单元、张量核心都是按固定块大小(如16、32、64这类2的整数次幂)设计的。64能完美适配这些硬件计算单元,运算时可充分利用向量指令的并行能力,无额外拆分或填充开销。而62不是2的幂,计算时需拆分矩阵并处理剩余非对齐部分,增加额外计算步骤与内存访问成本。
  • 内存访问效率:硬件缓存系统(L1/L2/L3)按固定块大小(如64字节)读取数据。64×64矩阵内存布局规整,能更好利用缓存的空间局部性,降低缓存miss概率;62×62矩阵的内存访问会出现更多非对齐读取,缓存命中率下降,拖慢整体速度。
  • 底层库的针对性优化:PyTorch的矩阵乘法依赖MKL、CuBLAS等底层库,这些库会对2的幂次大小的矩阵做专门优化,比如预编译的高效核函数、最优分块策略。对于非2的幂次矩阵,这些优化无法完全生效,只能走通用计算路径,效率自然更低。

内容的提问来源于stack exchange,提问作者Robin van Hoorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:32:46