【问题标题】:Why do processors with only AVX out-perform AVX2 processors for many SIMD algorithms?为什么只有 AVX 的处理器在许多 SIMD 算法中的性能优于 AVX2 处理器?
【发布时间】:2016-06-10 08:55:46
【问题描述】:

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

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

【问题讨论】:

  • @eoinmullan 你似乎在不同的机器上测试东西。说使用 AVX 在 Ivy Bridge 上获得 2 倍加速并不意味着在使用 AVX2 的 Haswell 上获得超过 2 倍。如果机器具有不同数量的内存带宽,则肯定是这种情况。你需要按照本所说的去做。在同一台机器上运行所有测试。否则,您是在将苹果与橙子进行比较。
  • 你的内存总线宽度是多少?几家银行?它们在两台机器上是否相同?
  • 您仍然需要在同一台机器上进行比较,因为不同的机器(以及不同型号的处理器)在内存带宽、缓存大小、内存速度、缓存速度等方面具有不同的行为。如果您在同一台机器上使用 AVX 比 AVX2 获得更好的速度,那么这可能表明编译过程中有些地方不太正确 - 但仅比较具有各种不同属性的两台不同机器不会显示这一点。
  • 这正是我期望看到的,假设您的基准测试是受内存限制的。如果您的 Ivy Bridge 机器的内存带宽比 Haswell 的多,那么 Ivy Bridge 的扩展性完全可以预期高于 Haswell。如果是这样,那就不足为奇了。
  • @LưuVĩnhPhúc 是的,但是 RyuJIT 在 AVX 上仅使用 128 位,而 _mm256_add_epi16 在我的 AVX 处理器上是无效指令。从 intel 内部函数指南中可以看出,在 AVX 的 256 位寄存器上只有 double 和 float 操作可用。

标签: c# c++ simd avx avx2


【解决方案1】:

(来自问题的cmets)

如果算术运算不是算法执行的瓶颈,那么使用 SIMD 将不会提供加速。其他瓶颈可能是内存带宽、缓存大小、内存速度、缓存速度。如果带有 AVX 的处理器在这些方面的性能优于 AVX2 处理器,那么它将从使用 SIMD 内部函数中获益更多。

【讨论】:

    【解决方案2】:

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

    当大约 700 微秒未使用 AVX 指令时,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 获得的所有收益都要高。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 2010-10-11
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      相关资源
      最近更新 更多