每个周期FLOPS为沙桥和Haswell的SSE2 / AVX / AVX2(FLOPS per c

2019-07-28 04:54发布

我如何每循环诸多核心触发器可以与桑迪桥和Haswell的做困惑。 正如我与SSE理解它应该是每芯周期4个触发器为SSE和每循环8个触发器每芯为AVX / AVX2。

这似乎是在此间证实, 如何实现每个周期4个FLOPS理论最大? ,在这里, 桑迪桥CPU规格 。

然而下面的链接似乎表明桑迪桥每个内核做每个周期16个拖鞋和Haswell的32%的核心每个周期触发器http://www.extremetech.com/computing/136219-intels-haswell-is-an-unprecedented -threat到NVIDIA与AMD 。

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

编辑:我现在明白为什么我被搞糊涂了。 我认为该术语仅FLOP称为单浮点(SP)。 我现在看到的是在测试我如何实现每个周期4个FLOPS理论最大? 实际上是对双浮点(DP),这样他们达到4个DP触发器/周期为SSE和8个DP触发器/周期AVX。 这将是有趣重做对SP这些测试。

Answer 1:

下面是FLOPS为一些最近的处理器微体系结构,并解释如何实现这些目标的计算:

英特尔酷睿2和Nehalem处理器:

  • 4个DP FLOPS /周期:2-宽SSE2加成+ 2范围内的SSE2乘法
  • 8个SP FLOPS /周期:4-宽SSE加成+ 4-宽SSE乘法

英特尔的Sandy Bridge / Ivy Bridge的:

  • 8个DP FLOPS /周期:4-宽AVX加成+ 4-宽AVX乘法
  • 16个SP FLOPS /周期:8宽AVX加成+ 8-宽AVX乘法

英特尔的Haswell / Broadwell微架构/ SKYLAKE微架构/ Kaby湖:

  • 16个DP FLOPS /周期:两个4-FMA宽(乘加)指令
  • 32个SP FLOPS /周期:2个8宽FMA(乘加)指令

AMD K10:

  • 4个DP FLOPS /周期:2-宽SSE2加成+ 2范围内的SSE2乘法
  • 8个SP FLOPS /周期:4-宽SSE加成+ 4-宽SSE乘法

AMD推土机/打桩机/压路机/挖掘机,每个模块(两个核心):

  • 8个DP FLOPS /周期:4-宽FMA
  • 16个SP FLOPS /周期:8宽FMA

AMD Ryzen

  • 8个DP FLOPS /周期:4-宽FMA
  • 16个SP FLOPS /周期:8宽FMA

英特尔凌动(邦内尔/ 45nm制程,盐井/ 32nm制程,Silvermont / 22nm制):

  • 1.5 DP FLOPS /周期:标量SSE2此外+标量乘法SSE2每隔一个周期
  • 6个SP FLOPS /周期:4-宽SSE加成+ 4-宽SSE乘法每隔一个周期

AMD山猫:

  • 1.5 DP FLOPS /周期:标量SSE2此外+标量乘法SSE2每隔一个周期
  • 4个SP FLOPS /周期:4-宽SSE另外每隔一个周期+ 4-宽SSE乘法每隔一个周期

AMD捷豹:

  • 3个DP FLOPS /周期:4-宽AVX另外每隔一个周期+ 4-宽AVX乘法在四个周期中
  • 8个SP FLOPS /周期:8宽AVX另外每隔一个周期+ 8-宽AVX乘法每隔一个周期

的ARM Cortex-A9:

  • 1.5 DP FLOPS /周期:标量加法+标量乘法每隔一个周期
  • 4个SP FLOPS /周期:4-宽NEON另外每隔一个周期+ 4-宽NEON乘法每隔一个周期

的ARM Cortex-A15:

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

高通的Krait:

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

IBM的PowerPC A2(蓝色基因/ Q),每个核心:

  • 8 DP FLOPS /周期:4-宽QPX FMA每个周期
  • SP单元延伸到DP和在相同的单位进行处理

IBM的PowerPC A2(蓝色基因/ Q),每个线程:

  • 4个DP FLOPS /周期:4-宽QPX FMA每隔一个周期
  • SP单元延伸到DP和在相同的单位进行处理

英特尔至强融核(骑士角),每个核心:

  • 16个DP FLOPS /周期:8宽FMA每个周期
  • 32 SP FLOPS /循环:16宽FMA每个周期

英特尔至强融核(骑士角),每个线程:

  • 8个DP FLOPS /周期:8宽FMA每隔一个周期
  • 16个SP FLOPS /循环:16宽FMA每隔一个周期

英特尔至强融核(骑士着陆),每个核心:

  • 32个DP FLOPS /周期:2个8宽FMA每个周期
  • 64个SP FLOPS /周期:两个16宽FMA每个周期

为什么有每个线程,每个核心数据的IBM蓝色基因/ Q和英特尔至强融核(骑士角)的原因是,这些核上运行的每个核心一个以上的线程时有较高的指令发布率。



Answer 2:

为Haswell的吞吐量是加法比乘法和FMA低。 有两个乘法/ FMA单位,但只有一个FP附加单元。 如果你的代码主要包括添加,那么你必须用1.0的乘数,以获得最大的吞吐量,以取代由FMA指令的补充。

的FMA指令上的Haswell的等待时间是5和吞吐量是2每时钟。 这意味着,你必须保持10个并行操作将获得最大的吞吐量。 如果,例如,要添加一个很长的FP号码清单,你就必须给它的十个部分分开,使用十个累加寄存器。

这是有可能确实,但谁会让一个特定的处理器,这样一个怪异的优化?



文章来源: FLOPS per cycle for sandy-bridge and haswell SSE2/AVX/AVX2