我如何每循环诸多核心触发器可以与桑迪桥和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这些测试。
下面是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和英特尔至强融核(骑士角)的原因是,这些核上运行的每个核心一个以上的线程时有较高的指令发布率。
为Haswell的吞吐量是加法比乘法和FMA低。 有两个乘法/ FMA单位,但只有一个FP附加单元。 如果你的代码主要包括添加,那么你必须用1.0的乘数,以获得最大的吞吐量,以取代由FMA指令的补充。
的FMA指令上的Haswell的等待时间是5和吞吐量是2每时钟。 这意味着,你必须保持10个并行操作将获得最大的吞吐量。 如果,例如,要添加一个很长的FP号码清单,你就必须给它的十个部分分开,使用十个累加寄存器。
这是有可能确实,但谁会让一个特定的处理器,这样一个怪异的优化?