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

AMD Epyc Zen 2因自旋循环性能下降问题求助

多线程SIMD矩阵向量乘法在AMD Zen 2上的性能异常问题

背景

  • 实现了一款多线程SIMD矩阵向量乘法,在目标规模下性能优于Intel MKL
  • 仅在AMD Zen 2处理器上出现异常,Intel Xeon SP Skylake无此问题

异常时序表现

  • 迭代“0”之前:连续执行100,000次乘法,每次执行时长稳定
  • 迭代“0”开始:在乘法之间加入自旋循环后,不到10次迭代,执行时长就大幅上升并稳定在原时长数倍的水平
  • 移除自旋循环后,需数十次迭代才能恢复至原性能
  • 性能变化可视化:
    AMD Zen 2上的乘法性能时序图

已尝试的无效优化手段

  • 在自旋循环中加入_mm_pause()
  • 预取矩阵部分数据
  • 在AVX寄存器中执行其他计算
  • 反复执行列数更少的同矩阵向量乘法

当前推断

只要CPU在短时间内执行了与完整规模乘法不同的操作,后续乘法性能就会大幅下降;当乘法间隔超过一次“热”乘法的时长时可能触发该现象(待确认)

系统调优状态

  • 已禁用所有影响确定性的节能模式
  • 程序以高SCHED_FIFO优先级运行
  • 线程已绑定至CPU核心

求助问题

  1. 能否解释CPU内部可能发生的情况?
  2. 如何在乘法间存在短暂间隔时仍保持良好性能?

内容的提问来源于stack exchange,提问作者northwindow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:48