在并行计算中,理论上超线性加速是不可能的。但在实践中我们确实看到了这样的情况。 One reason is cache effect但我不明白它起什么作用。此外,还有其他事情,但它们是什么?总之,
如何实现超线性加速?
我是并行计算的初学者。
答案 0 :(得分:16)
假设你有一台8处理器的机器,每个处理器有一个1MB的缓存,你的计算使用6MB的数据。
在1个处理器上,计算将在CPU,缓存和RAM之间进行大量数据移动。在8个处理器上,计算只需要在CPU和缓存之间移动数据。这样你就可以实现超线性加速。
这些数字和此分析已经简化为初学者的论述。
答案 1 :(得分:7)
简而言之,当工作处理器的总量大大低于单个处理器执行的总工作量时,就实现了超线性加速。
这可以通过三种方式实现:
原始顺序算法非常糟糕,在一个处理器上使用算法的并行版本通常会取消超线性加速。
并行算法使用一些搜索,如随机游走,行走的处理器越多,在达到您要查找的内容之前,总共行走的距离就越少。
现代处理器的记忆速度越来越快。通常,它会尝试将您使用的数据保存在快速内存中。我们可以肯定地说,您的数据量大于快速内存量。如果使用n个处理器,则n倍于更快的内存量。更多数据适合快速存储器,这使得在同一任务上花费更少的时间(因此工作量)成为可能。