流内存带宽基准测试与本地 运行 MPI 的潜在加速之间的实际关系是什么?

What is the practical relationship between the streams memory bandwidth benchmark and the potential speedup from running MPI locally?

我 运行 具有 10 个处理器的计算机上的流内存带宽基准测试 (https://www.cs.virginia.edu/stream/)。基准测试表明,在 3 或 4 个处理器之后,加速稳定在大约 3 倍。此结果对 MPI 代码的性能有何实际影响?为简单起见,假设该程序仅在这台多核机器上本地 运行 多个进程。这是否意味着如果您是 运行 内存访问密集型程序,那么即使使用所有内核,您也无法获得超过 3 倍的加速?如果你 运行 一个不是内存访问密集型的程序,理论上你能得到完整的 10 倍吗?如果您同时 运行 两个或三个内存访问密集型程序,每个程序都使用三个处理器,它们每个都能获得 3 倍的加速,还是它们会相互干扰并在同时从 RAM 中拉出时相互减慢速度?

加速是关于代码中存在多少并行性。此外,任何资源也可能成为瓶颈,具体取决于应用程序的类型。如果您的应用程序是内存密集型的,那么您将受到内存带宽的限制。如果它不是内存密集型的,并且它是高度并行的(以 Monte Carlo 采样为例),那么您将接近核心的完全加速。

回答你的最后一个问题(多内存密集型):归根结底,我们依靠内存控制器来做read/write。所以这取决于内存条和物理页面的分配位置。所以,你提到的两种情况中的任何一种都可能发生。