建立车顶线模型

时间:2017-01-20 23:28:26

标签: performance parallel-processing hardware multicore supercomputers

我正在尝试为我正在运行模拟的超级计算机中的节点构建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的计算:

  • 顺序程序(单核)无矢量化:

    • 1x2.6x1(我假设没有矢量化,我们只能实现1个op /周期?)= 2.6 GFLOPs
  • 带矢量化(SSE)的顺序程序(单核):

    • 1x2.6x8 = 20.8 GFLOPs
  • 一个Xeon上带有矢量化(SSE)的所有核心:

    • 8x2.6x8 = 166.4 GFLOPs
  • 所有核心都是Xeons with vectorisation(SSE):

    • 2x 8x2.6x8 = 332.8 GFLOPs

程序可用的内存带宽如何在上面显示的不同类型的程序之间变化?我知道1 Xeon E5-2650的最大内存带宽是59.7 GB / s,但是这可以在单核上实现吗?用2 Xeon E2650s这会变成119.4 GB / s吗?

实现的GFLOP(使用峰值带宽x算术强度)也是如此:

  • 无矢量化的顺序程序:

    • 59.7 * 1/3 = 19.9 GFLOP,但是因为我们的车顶线是2.6 GFLOP,我们限制在2.6 GFLOP?
  • 带矢量化的顺序程序:

    • 59.7 * 1/3 = 19.9 GFLOPs。这是可以实现的,因为我们的车顶线是20.8 GFLOP。
  • 使用矢量化的一个Xeon(使用全部8个核心):

    • 59.7 * 1/3 = 19.9 GFLOPs。我对此表示怀疑,因为我们的并行程序肯定能够产生比顺序程序更多的mem reqs,而且顺序程序肯定不会使内存系统饱和吗?
  • 带有矢量化的两个Xeon(总共16个核心):

    • 119.4 * 1/3 = 39.8 GFLOPs。

我觉得实现的GFLOP有问题,我在某处犯了错误吗?

0 个答案:

没有答案