查找处理器每个内核的内存带宽


2

嗨,我正在学习PETSc(一种用于并行求解PDES的软件),我在FAQ中获得了这篇文章

需要较高的每CPU内存性能。每个CPU(多核系统中的内核)都需要具有大约2 GB或更多GB /秒的内存带宽。例如,使用第二个处理器时,标准的双处理器“ PC”将无法提供更好的性能,也就是说,使用第二个处理器时,您不会看到速度提高。这是因为稀疏矩阵计算的速度几乎完全取决于内存的速度,而不是CPU的速度

我在计算机上使用Debian Linux和Ubuntu Linux系统。如何找出CPU的内存带宽(以Gb / s为单位)?是否有任何Linux命令用于此目的。


对于x86,有Memtest86 +。它甚至可能在您的Grub启动菜单中。它会以MB / s为单位报告处理器缓存和内存速度。假定最小“ N * 2 GB / s”将在RAM接口而不是高速缓存中。
锯末

今天真的重要吗?一条HyperTransport 1.0链接的内存带宽在800 Mhz时已经是3.2 GB / s。
MSalters 2013年

Answers:


3

适用于Linux 的内存带宽基准。它是开源的,适用于X86和Arm。

它将为您的内存提供原始性能,并为您提供带内存的系统性能。但这不会为您提供实时带宽。

还有一个memtop工具。与其说带宽,不如说是使用率。您可以在PETSc运行时使用它来监视系统,以查看使用了多少带宽。

还有一个读取CPU性能计数器的程序,可以与页面错误结合使用。

最后,您始终可以尝试运行PETSc。如果使用两个内核时性能提高一倍,则您有足够的带宽可用。重复直到速度停止。不是最优雅的方式,而是最可能的最佳实践解决方案。


感谢您的回复。您能否弄清楚有关带宽程序的短语的含义,该短语给出“内存的原始性能以及带内存的系统性能” v / s“实时带宽”?非常感谢
Smilingbuddha

1

谈论内存带宽的通常方法是使用Stream基准测试,该基准在线程版本中可用。对于给定的系统,理论带宽(通道数*宽度*时钟)之间存在密切的关系-这很容易知道,因为它很容易计算。

sys    memory                      BW*   stream  stream/core
R      2s x 2ch x PC3200  (numa)   12.8  6.5     3.2
S      2s   2ch x pc5400  (uma)    10.8  6.1     .76
O      2s x 4ch x pc10660 (numa)   85    51      2.1

现代机器(尤其是台式机)往往提供比这些旧服务器系统更多的功能。上面的数字都是按常规方式编译且未经调整的Stream运行-发烧友站点倾向于报告基于Windows的经过调整的伪Stream数字,这些数字更接近于硬件的理论值。我不会使用Memtest86的值,因为它是ram模式测试仪,而不是真正的基准测试。

同样,通常,数字代码可以有利地使用阻塞来减轻其对纯内存带宽的依赖性。PETSc注释暗示它们没有阻塞,这是不幸的,因为内存尚未通过片上FLOPS进行扩展。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.