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

streams内存带宽基准与本地运行MPI的潜在加速之间的实际关系是什么?,mpi,latency,memory-access,Mpi,Latency,Memory Access,我在一台有10个处理器的计算机上运行了streams内存带宽基准测试。基准测试表明,经过3或4个处理器后,加速率稳定在3倍左右。这个结果对MPI代码的性能有什么实际影响?为简单起见,假设程序仅在此多核计算机上本地运行多个进程。这是否意味着,如果运行的是内存访问密集型程序,那么即使使用所有内核,也无法获得超过3倍的加速?如果你运行的程序不是内存访问密集型的,理论上你能得到完整的10倍吗?如果您同时运行两个或三个内存访问密集型程序,每个程序使用三个处理器,它们是否能够获得3倍的加速,或者它们是否会相

我在一台有10个处理器的计算机上运行了streams内存带宽基准测试。基准测试表明,经过3或4个处理器后,加速率稳定在3倍左右。这个结果对MPI代码的性能有什么实际影响?为简单起见,假设程序仅在此多核计算机上本地运行多个进程。这是否意味着,如果运行的是内存访问密集型程序,那么即使使用所有内核,也无法获得超过3倍的加速?如果你运行的程序不是内存访问密集型的,理论上你能得到完整的10倍吗?如果您同时运行两个或三个内存访问密集型程序,每个程序使用三个处理器,它们是否能够获得3倍的加速,或者它们是否会相互干扰并在同时从RAM中提取时降低速度?

加速是指代码中存在多少并行性。此外,根据应用程序的类型,任何资源都可能成为瓶颈。如果您的应用程序是内存密集型的,那么您将受到内存带宽的限制。如果它不是内存密集型的,并且是高度并行的(以蒙特卡罗采样为例),那么您将接近内核的完全加速


要回答您的最后一个问题,多内存密集型:在一天结束时,我们依靠内存控制器进行读/写操作。因此,这取决于内存库和物理页的分配位置。因此,您提到的两种情况中的任何一种都可能发生。

那么,使用处理器数量较多的计算机是否存在缺点?具体来说,在群集上,您是否可以通过在具有4个处理器的8台计算机上运行MPI作业,而不是在具有32个处理器的一台计算机上运行MPI作业来获得更好的性能?后者不需要节点之间的通信,但前者在八个独立的节点上有八个独立的内存控制器?我不会说使用更多处理器是一个缺点。应用程序起着关键作用。请记住,MPI是关于节点之间的通信,并且您可以运行一个更大的问题,因为您有x*个RAM节点。互连起着关键作用,今天的infiniband网络可以根据消息大小驱动GB/s。所以,在回答你的最后一个问题时,需要考虑一些参数……答案是:这取决于。酷,我认为这取决于这个问题的答案。我想问的是,是否有可能用更少的处理器在更多的内核上进行分发会更快,而你说是的,它会更快。当然,我理解这取决于,特别是取决于进程内的本地内存延迟是否更重要,或者进程之间的数据交换导致的延迟是否更重要。