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

smi*_*dha 3 linux cpu bandwidth cpu-speed

您好,我正在学习 PETSc(一种用于并行数值求解 PDES 的软件),我在常见问题解答中看到了这段话

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

我在我的计算机上使用 Debian Linux 和 Ubuntu Linux 系统。如何找到我的 cpu 的内存带宽(以 Gb/s 为单位)?有没有什么linux命令可以做到这一点。

Hen*_*nes 5

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

它将为您提供内存的原始性能以及内存的系统性能。但它不会给你实时带宽。

还有一个memtop 工具。更重要的是使用情况而不是带宽。您可以在 PETSc 运行时使用它来监控您的系统,以查看使用了多少带宽。

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

最后,您始终可以尝试运行 PETSc。如果使用两个内核时性能翻倍,那么您就有空闲的带宽。重复直到速度增加停止。这不是最优雅的方式,但很可能是最好的实用解决方案。