桥梁和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:
英特尔Sandy Bridge /常春藤桥:
英特尔Haswell / Broadwell / Skylake / Kaby Lake:
AMD K10:
AMD推土机/打桩机/压路机/挖掘机,每个模块(双核):
AMD Ryzen
英特尔Atom(Bonnell / 45nm,Saltwell / 32nm,Silvermont / 22nm):
AMD山猫:
AMD捷豹:
ARM Cortex-A9:
ARM Cortex-A15:
Qualcomm Krait:
IBM PowerPC A2(Blue Gene / Q),每核心:
IBM PowerPC A2(Blue Gene / Q),每个线程:
英特尔至强融核(骑士角),每核心:
Intel Xeon Phi(Knights Corner),每个线程:
英特尔至强融合(骑士降落),每核心:
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