【发布时间】:2014-03-02 16:35:36
【问题描述】:
在现代多核平台上,内存带宽受限的应用程序的并行性能通常无法随内核数量很好地扩展。通常,在达到一定数量的内核时会观察到加速,但在那之后性能就会饱和。一个综合的例子是众所周知的STREAM benchmark,它通常用于报告可实现的内存带宽,即饱和点的内存带宽。
考虑以下 STREAM 基准测试(三元组)在峰值内存带宽为 42.7GB/s (DDR3-1333) 的单个 Xeon E5-2680 上的结果:
1 core 16 GB/s
2 cores 30 GB/s
3+ cores 36 GB/s
STREAM 可以很好地从 1 核扩展到 2 核,但在 3 核以上时,性能大致保持不变。
我的问题是:单个 CPU 内核可以实现的内存带宽是什么决定的?由于这个问题太宽泛了,我把它缩小到上面提到的架构:我怎么能预测带有 1 个线程的 STREAM 会给我 16 GB/s 从 E5-2680 的规格,或者通过查看硬件计数器等?
【问题讨论】:
-
我想知道内存通道的数量如何/是否会影响速度?我的具有 4 个内存通道的 CPU 在速度基准测试中扩展到 4 个线程。您在两个线程上看到了一些改进,我认为您的机器也有 4 个通道。 2 通道系统的表现如何?
标签: performance multicore memory-bandwidth