我想了解如何计算FMA的性能。如果我们看一下这里的描述:
对于Skylake体系结构,指令有Latency=4和Throughput(CPI)=0.5,因此指令的总体性能是每个指令的4*0.5 = 2时钟。
因此,据我所知,如果最大(涡轮)时钟频率为3 3GHz,那么对于一个核心在一秒,我可以执行1500 000条指令。
是对的吗?如果是这样的话,我观察到更高性能的原因是什么?
发布于 2019-03-03 17:28:15
Latency=4和吞吐量(CPI)=0.5,因此指令的总体性能为每条指令4*0.5 =2个时钟。
刚计算出的单位给cycles²/instr,这是奇怪的,我没有解释它。
这里列出的吞吐量实际上是一个倒数吞吐量,在CPI中是这样的,所以每条指令有0.5个周期,或者每个周期有2个指令。这些数字是相互关联的,延迟与之无关。
有一个相关的计算同时涉及延迟和(交互)吞吐量,即延迟和吞吐量的乘积:4*2=8(以“指令数量”为单位)。这是多少个独立的操作实例可以同时“飞行”(已开始但尚未完成),可与网络理论中的带宽延迟积相媲美。这个数字通知了一些代码设计决策,因为它是代码需要向CPU公开的指令级并行性的下限,以便它能够充分利用计算资源。
发布于 2019-03-03 16:49:50
吞吐量为0.5意味着处理器每个周期可以执行两个独立的FMA。所以在3 3GHz时,最大的FMA值是每秒60亿。您已经说过,您只能实现略大于1.5B的吞吐量。这种情况可能是由于下列一个或多个原因造成的:
https://stackoverflow.com/questions/54971000
复制相似问题