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

AVX512点积循环仅提速10.6倍,未达预期16倍的性能疑问

问题:AVX512实现点积性能未达预期的分析与优化疑问

我需要实现数组与数组对应浮点数的乘积求和(点积),数组规模可达数万个元素,且要每秒运行约10万次处理实时数据流,性能优先级极高。

我分别用常规数学实现和AVX512实现了该逻辑,但AVX512版本仅比常规版本快约10.6倍——按单条AVX512指令可处理16个操作的特性,我预期能达到约16倍的性能提升;而且AVX512版本的循环开销(循环变量、递增、分支判断等)仅为普通版本的1/16,这点也没体现出应有的优势。

编译环境为Visual Studio 2022社区版Release模式,运行平台是Intel i7-11700F处理器。

核心代码逻辑

每次遍历两个数组的16个元素,相乘后维护16个累加和,最终用_mm512_reduce_add_ps()把16个结果求和:

vector<__m512>      a512In;
vector<__m512>      a512IRCurr;
__m512 fOut = _mm512_set1_ps( 0.0 );

for ( iSample = 0; iSample < iIterations; iSample++ ) 
    fOut = _mm512_add_ps( fOut, _mm512_mul_ps( a512In[ iPos++ ],
                                               a512IRCurr[ iSample ] ) );

观察到的问题与疑问

  • 从生成的汇编中看到使用了vmovups指令(不假定目标地址对齐),我怀疑这是性能未达预期的原因。虽然多代Intel CPU中对齐与非对齐版本的指令速度相近,但有资料显示两者仍可能存在延迟差异。我熟悉6502汇编,但对现代Intel指令集了解有限。
  • 对于a = a + b*c这类操作,_mm512_add_ps是否为最优指令?有没有更高效的、类似a += b*c的指令可以用?

生成的汇编代码

for ( iSample = 0; iSample < iIterations; iSample++ )
00007FF6677B2958  movsxd      r8,edi  
00007FF6677B295B  test        edi,edi  
00007FF6677B295D  jle         Circle2AVR512::ProcessInput+0AEh (07FF6677B298Eh)  
        fOut = _mm512_add_ps( fOut, _mm512_mul_ps( a512In[ iPos++ ],
00007FF6677B295F  movsxd      r9,eax  
00007FF6677B2962  mov         rdx,r11  
00007FF6677B2965  shl         r9,6  
00007FF6677B2969  mov         ecx,edi  
00007FF6677B296B  sub         r9,r11  
00007FF6677B296E  add         r9,qword ptr [r10]  
00007FF6677B2971  vmovups     zmm0,zmmword ptr [r9+rdx]  
00007FF6677B2978  vmulps      zmm1,zmm0,zmmword ptr [rdx]  
00007FF6677B297E  lea         rdx,[rdx+40h]  
00007FF6677B2982  vaddps      zmm2,zmm2,zmm1  
00007FF6677B2988  sub         r8,1  
00007FF6677B298C  jne         Circle2AVR512::ProcessInput+91h (07FF6677B2971h)  
                                                   a512IRCurr[ iSample ] ) );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:00:12