gpt4 book ai didi

c# - 为什么只有 AVX 的处理器在许多 SIMD 算法方面优于 AVX2 处理器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:02 25 4
gpt4 key购买 nike

我一直在研究 C# 和 C++ 中 SIMD 算法的优势,发现在许多情况下,在 AVX 处理器上使用 128 位寄存器比在具有 AVX2 的处理器上使用 256 位寄存器提供更好的改进,但是我不明白为什么。

我所说的改进是指在同一台机器上 SIMD 算法相对于非 SIMD 算法的加速。

最佳答案

在 AVX 处理器上,256 位寄存器的上半部分和浮点单元在不执行 AVX 指令(VEX 编码操作码)时由 CPU 关闭。当代码确实使用 AVX 指令时,CPU 必须为 FP 单元加电——这大约需要 70 微秒,在此期间,AVX 指令实际上使用 128 个微操作执行两次。

当 AVX 指令在大约 700 微秒内未被使用时,CPU 会再次关闭电路的上半部分。

现在它这样做是因为电路的上半部分消耗功率(doh!),因此会产生热量(double doh!)。这意味着当使用 AVX 指令时,CPU 会运行得更热。因此,鉴于 CPU 在具有热余量时可以“涡轮增压”,使用 AVX 指令会减少这种机会,事实上,CPU 实际上会降低“基本时钟速度”。因此,例如,如果您有一个官方时钟频率为 2.3GHz 的 CPU,可以加速到 2.7,当您开始使用 AVX 指令时,芯片的时钟频率会下降到 2.1 并仅提升到 2.3,在极端情况下,基本时钟可能减少到 1.9(参见 this 的第 2-4 页)。

在此阶段,您的 CPU 执行所有指令的速度大约比不使用 AVX 指令时慢 10-15%,甚至可能慢 20%。如果您正在执行大量 SIMD 操作,那么 256 位宽的指令就值得这样做。但是,如果您正在执行一些 AVX 指令,然后是“正常”代码,然后又是一些 AVX,那么这种时钟速度损失将比您仅从 AVX 获得的所有 yield 都要多。

这就是为什么 128 位宽的 SIMD 可以比 256 位宽的运行速度更快的原因,除非您有 SIMD 主导的操作的长时间密集突发。使用剩余的硅是有代价的……(或者更准确地说,是不使用它的奖励,我们有时会忘记我们已经得到了)。

关于c# - 为什么只有 AVX 的处理器在许多 SIMD 算法方面优于 AVX2 处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35663635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com