Parallel processing 缓存效应的超线性加速——不公平比较?

Parallel processing 缓存效应的超线性加速——不公平比较?,parallel-processing,Parallel Processing,众所周知,当使用多个处理器时,由于问题的每个分区完全匹配,会出现超线性加速,这是由于缓存效应,从而在顺序算法上加速内存事务,该算法将多次交换内存。我已经看到了几十个例子,其中的逻辑非常清楚,对于并行部分也做了很好的解释 然而,每次与顺序算法进行比较时,顺序算法都是一个非常幼稚的解决方案,从0…N开始有一个大循环 是否有人认为顺序解决方案与并行解决方案的效果相同??(即对问题进行分区,并按顺序解决每个分区,使其适合缓存)。换句话说,只需在一个线程中运行并行解决方案。通过这样做,我们可以期望线性加速

众所周知,当使用多个处理器时,由于问题的每个分区完全匹配,会出现超线性加速,这是由于缓存效应,从而在顺序算法上加速内存事务,该算法将多次交换内存。我已经看到了几十个例子,其中的逻辑非常清楚,对于并行部分也做了很好的解释

然而,每次与顺序算法进行比较时,顺序算法都是一个非常幼稚的解决方案,从0…N开始有一个大循环

是否有人认为顺序解决方案与并行解决方案的效果相同??(即对问题进行分区,并按顺序解决每个分区,使其适合缓存)。换句话说,只需在一个线程中运行并行解决方案。通过这样做,我们可以期望线性加速,而不是像最初认为的那样超线性

我错过了什么?这种反逻辑对于一个已经存在了几十年的概念来说似乎太简单了


这个问题是在一位老师告诉我“超线性加速是不可能的,你总是可以改进顺序加速,这样就又有了线性加速”。我无法证明相反的情况。

超线性加速可能来自这样一个事实,即不仅处理器的数量增加了,而且缓存的数量也增加了。顺序数据拆分的方法不会增加缓存。

你必须考虑数据必须首先从主内存移动到CPU缓存(更不用说外部存储IO)了。在并行情况下,通常会有更多的内存控制器(在不同的CPU插槽上或在不同的系统板上)和更多的IO端口,因此,通过进出数据可以获得更多的带宽。除非你能(以某种方式)为串行处理器增加更多的内存和IO带宽,否则并行加速将保持超线性。但是有p个内存控制器和p个处理器只会导致线性加速,分别使用1个内存控制器和1个处理器。顺便说一下,我是超线性加速的支持者,只是我很难向老师证明这一点。我能找到的最好的方法是古斯塔夫森定律,它在理论上接受超线性加速,使用的方法(固定时间加速模型)与阿姆达尔定律(固定大小加速模型)不同。这是一个需要考虑的好细节,我正在更仔细地分析它。