这是另一种SSE is slower than normal code! Why?类型的问题。
我知道有很多类似的问题,但它们似乎与我的情况不符。
我正在尝试使用蒙哥马利模乘法实现Miller-Rabin 素性测试以进行快速模运算。
我尝试以标量和 SIMD 方式实现它,结果发现 SIMD 版本慢了大约 10%。
[esp+16] 或 [esp+12] 指向是否有人想知道的模倒数。N
我真的很困惑这样一个事实,即所谓的 1 Latency 1c Throughput 1uops 指令psrldq需要超过 3 Latency 0.5c Throughput 1uops pmuludq。
下面是在 Ryzen 5 3600 上运行的 Visual Studio 的代码和运行时分析。
关于如何改进 SIMD 代码和/或为什么它比标量代码慢的任何想法表示赞赏。
PS似乎由于某种原因,一条指令关闭了运行时分析
编辑1:对图像的评论是错误的,我在下面附上了一个固定版本:
;------------------------------------------
; Calculate base^d mod x
;
; eax = 1
; esi = x
; edi = bases[eax]
; ebp = d
; …Run Code Online (Sandbox Code Playgroud)