桥梁和haswell SSE2 / AVX / AVX2

我很困惑Sandy-Bridge和Haswell可以完成每个核心每个周期的触发器数量。 根据我对SSE的理解,对于AVX / AVX2,每个内核对于SSE和每个内核每个周期应该有4个触发器。

这似乎在这里得到证实,我如何实现每个周期4 FLOP的理论最大值? ,以及Sandy-Bridge CPU规范。

然而,下面的链接似乎表明,Sandy-bridge每个内核每个周期可以执行16次触发,而每个内核每个周期可以执行Haswell 32次触发。http://www.extremetech.com/computing/136219-intels-haswell-is-an-universe -threat到NVIDIA与AMD。

谁可以给我解释一下这个?

编辑:我现在明白为什么我感到困惑。 我认为术语FLOP只涉及单浮点(SP)。 我现在看到测试如何获得每个周期4个FLOP的理论最大值? 实际上是在双浮点(DP)上,所以它们为SSE实现4个DP FLOP /周期,为AVX实现8个DP FLOP /周期。 在SP上重做这些测试会很有趣。


以下是最近处理器微体系结构的FLOP计数和解释如何实现它们:

英特尔酷睿2和Nehalem:

  • 4个DP FLOP /周期:2个宽SSE2加+ 2个宽SSE2乘法
  • 8 SP FLOPs /周期:4宽SSE加+ 4宽SSE乘法
  • 英特尔Sandy Bridge /常春藤桥:

  • 8个DP FLOP /周期:4个全AVX加+ 4个全AVX乘法
  • 16 SP FLOPs /周期:8宽AVX加+ 8宽AVX乘法
  • 英特尔Haswell / Broadwell / Skylake / Kaby Lake:

  • 16个DP FLOP /周期:两个4宽FMA(融合乘加)指令
  • 32 SP FLOP /周期:两个8宽FMA(融合乘加)指令
  • AMD K10:

  • 4个DP FLOP /周期:2个宽SSE2加+ 2个宽SSE2乘法
  • 8 SP FLOPs /周期:4宽SSE加+ 4宽SSE乘法
  • AMD推土机/打桩机/压路机/挖掘机,每个模块(双核):

  • 8个DP FLOP /周期:4个范围的FMA
  • 16 SP FLOPs /周期:8宽FMA
  • AMD Ryzen

  • 8个DP FLOP /周期:4个范围的FMA
  • 16 SP FLOPs /周期:8宽FMA
  • 英特尔Atom(Bonnell / 45nm,Saltwell / 32nm,Silvermont / 22nm):

  • 1.5 DP FLOPs /周期:每隔一个周期标量SSE2加+标量SSE2乘法
  • 6个SP FLOP /周期:每隔一个周期4个SSE增加+ 4个宽SSE乘法
  • AMD山猫:

  • 1.5 DP FLOPs /周期:每隔一个周期标量SSE2加+标量SSE2乘法
  • 4 SP FLOP /周期:每隔一个周期增加4个SSE,每隔一个周期增加4个SSE
  • AMD捷豹:

  • 3个DP FLOP /周期:每隔一个周期4个AVX加4个周期+ 4个AVX乘法
  • 8个SP FLOP /周期:每隔一个周期8个AVX加法+每隔一个周期加8个AVX乘法
  • ARM Cortex-A9:

  • 1.5 DP FLOPs /周期:每隔一个周期标量加+标量乘
  • 4 SP FLOP /周期:每隔一个周期增加4个NEON NEON +每隔一个周期增加4个NEON NEON
  • ARM Cortex-A15:

  • 2个DP FLOP /周期:标量FMA或标量乘加
  • 8个SP FLOP /周期:4宽NEONv2 FMA或4宽NEON乘加
  • Qualcomm Krait:

  • 2个DP FLOP /周期:标量FMA或标量乘加
  • 8个SP FLOP /周期:4宽NEONv2 FMA或4宽NEON乘加
  • IBM PowerPC A2(Blue Gene / Q),每核心:

  • 8个DP FLOP /周期:每个周期4个QPX FMA
  • SP元素扩展到DP并在相同单元上处理
  • IBM PowerPC A2(Blue Gene / Q),每个线程:

  • 4个DP FLOP /周期:每隔一个周期4个QPX FMA
  • SP元素扩展到DP并在相同单元上处理
  • 英特尔至强融核(骑士角),每核心:

  • 16个DP FLOP /周期:每个周期8个FMA
  • 32个SP FLOP /周期:每个周期16个FMA
  • Intel Xeon Phi(Knights Corner),每个线程:

  • 8个DP FLOP /周期:每隔一个周期8个FMA
  • 16个SP FLOP /周期:每隔一个周期16个FMA
  • 英特尔至强融合(骑士降落),每核心:

  • 32个DP FLOP /周期:每个周期两个8宽FMA
  • 64个SP FLOP /周期:每个周期两个16宽FMA
  • IBM Blue Gene / Q和Intel Xeon Phi(Knights Corner)的每线程和每核心数据的原因在于,每个内核运行多个线程时,这些内核的指令问题率较高。


    Haswell的吞吐量低于乘法和FMA。 有两个乘法/ FMA单位,但只有一个fp加单位。 如果您的代码主要包含附加内容,那么您必须通过乘以1.0的FMA指令替换附加内容以获得最大吞吐量。

    Haswell上的FMA指令的延迟为5,每个时钟的吞吐量为2。 这意味着您必须保持10个并行操作才能获得最大吞吐量。 例如,如果您想要添加一个非常长的fp数字列表,则必须将其分成十部分并使用十个累加器寄存器。

    这确实是可能的,但是谁会为一个特定的处理器做出如此奇怪的优化?

    链接地址: http://www.djcxy.com/p/85651.html

    上一篇: bridge and haswell SSE2/AVX/AVX2

    下一篇: Raphson Division For Floating Point Divide?