我正在尝试为我正在运行模拟的超级计算机中的节点构建roofline model。该节点拥有2个Intel Xeon E5-2650 v2(Ivy Bridge)8核2.6 GHz处理器(每个16核) 节点),总共64GB RAM(每个4GB)。 Intel Xeon E5-2650的最大内存带宽为shown here,为59.7 GB / s。
达到GFLOPS =最大记忆带宽x算术强度。
最大GFLOPS = num核心x时钟频率,以GHz x ops / cycle为单位。
我的代码的算术强度为1/3,并使用双精度浮点。
以下是我计算不同类型程序的峰值GFLOP的计算:
顺序程序(单核)无矢量化:
带矢量化(SSE)的顺序程序(单核):
一个Xeon上带有矢量化(SSE)的所有核心:
所有核心都是Xeons with vectorisation(SSE):
程序可用的内存带宽如何在上面显示的不同类型的程序之间变化?我知道1 Xeon E5-2650的最大内存带宽是59.7 GB / s,但是这可以在单核上实现吗?用2 Xeon E2650s这会变成119.4 GB / s吗?
实现的GFLOP(使用峰值带宽x算术强度)也是如此:
无矢量化的顺序程序:
带矢量化的顺序程序:
使用矢量化的一个Xeon(使用全部8个核心):
带有矢量化的两个Xeon(总共16个核心):
我觉得实现的GFLOP有问题,我在某处犯了错误吗?