如何将并行复杂性结果缩小到不断增加的多个内核?


20

我在接受类NC给出的“通过并行算法有效解决”的复杂性理论视图时遇到了问题:

NC是可以通过并行算法在具有处理器上的时间上通过并行算法解决的问题。p Ñ ø Ñ ķÇ ķ ÑO(logcn)p(n)O(nk)c,kN

我们可以假设一个PRAM

我的问题是,这对于“真实”机器似乎没有多说,即具有有限数量处理器的机器。现在,我被告知“众所周知”,我们可以在处理器上“有效地”模拟处理器算法。p ÑO(nk)pN

“有效”在这里是什么意思?这是民间传说还是有严格的定理来量化模拟所引起的开销?

我担心发生的事情是我遇到了一个问题,该问题有一个顺序算法和一个“高效”并行算法,当在处理器上进行仿真时,也需要时间(如果顺序算法是渐近最优的,那么在这种粒度的分析上就可以预期到所有这些)。在这种情况下,据我们所知,并没有加速。实际上,模拟并行算法可能比顺序算法。那就是我真正在寻找比 bounds 更精确的声明(或声明没有这种结果的声明)。p O n kO(nk)pO(nk)O


布伦特定理?
cic 2012年

您是说吗?如果是这样,则(afaik)仅在某些情况下适用,并且也不允许立即转换运行时。或者,如果有的话,请详细说明。Tp<Wp+D
拉斐尔

NC回答了“是否有可能在更少的运行时间上权衡更多的硬件?”这一问题。您可能想要限制自己使用恒定的硬件,这类似于限制自己使用恒定的内存,这是对某些问题的更好建模。对于实际用途,请参见进位lookhead加法器,更多的硬件,以便在完成位的加法。O N NO(N)
AProgrammer 2012年

Answers:


13

如果您假设处理器的数量由一个常数来限制,那么在NC中实际存在的问题并不多。由于具有k个处理器和t个并行时间的PRAM上的任何算法都可以在O(kt)时间内用单处理器RAM进行模拟,因此,如果k为常数,则并行时间和顺序时间只能相差一个常数。

但是,如果您假设随着输入大小的增加可以准备一台具有更多处理器的计算机,那么NC中的问题就意味着只要您可以准备更多的处理器,运行时间将“非常短”,或者更准确地说,输入大小为多对数。如果您认为此假设是不现实的,请将其与无限制内存的假设进行比较:实际计算机仅具有有限的空间,但是在研究算法和复杂性时,我们几乎总是假设计算设备没有恒定的上限束缚在空间上。实际上,这意味着随着输入大小的增加,我们可以为计算机准备更多的内存,这就是我们通常在现实世界中使用计算机的方式。NC在并行计算中模拟类似情况。


1
1)是的,parallelising上不断多的内核可以只产生恒定的加速。这是固有的,可悲地隐藏在。(恕我直言)一个有趣的问题是:我能否获得(最佳)加速比k,或者只有k / 2k 1?2)尽管可以通过提供大量 RAM 来证明无限内存的合理性(并且从技术上讲,您可以添加硬盘),但对于处理器而言,通常情况并非如此。如今,典型的(个人)计算机具有16个或更少的内核。换句话说,你可以用“正常”的结果中相关问题的大小,许多平行的结果只能达到ñ 20Okk/2k1n20
拉斐尔

4
@Raphael:某个问题是否属于NC的问题无法为您的问题建模。我并不是说您的问题没意思。我只是说NC不是建模的正确的复杂类。
伊藤刚(Tsuyoshi Ito)

我真的很高兴听到这个消息。但是,一个人声称不是。不一定要使用NC,但总体上具有复杂的理论结果。其他班怎么样?
拉斐尔

纠正:NC中的问题意味着,如果处理器的数量输入大小中足够大的多项式,则运行时间是多对数的。在可以说是更现实的情况下,处理器的数量是固定多项式,例如或较慢的非常数函数(例如Ologn)),NC中的成员资格从根本上不暗示任何东西。O(n)O(logn)
JeffE 2012年

@JeffE:那不是更正。我只写了“准备更多的处理器”而没有给出严格的含义(因为我认为这样做会掩盖这一点)。
伊藤刚(Tsuyoshi Ito)

10

我同意你说不表征有效的并行算法的最佳途径。NC

实际上,按照定义,NC还包括许多无法有效并行化的问题。一个常见的例子是并行二进制搜索。出现问题的原因是,即使对于并行二进制搜索也具有对数时间复杂性。在最坏的情况下,任何需要最多对数时间的顺序算法都以N C为单位,而不管其并行可行性如何。p=1NC

但是,等等,还有更多。

算法假定并行计算机具有多项式处理器,以解决多对数时间中等大小的问题。但是,实际上,我们使用中等大小的机器(就处理器而言)来解决问题。处理器的数量往往是次多项式,甚至是次线性的。NC

PO(nϵ),0<ϵ<1NCnnn<lg3nn0.5×109NC

在一个答案中,已经观察到“在实践中,这意味着我们可以随着输入大小的增加而准备一台具有更多内存的计算机,这就是我们通常在现实世界中使用计算机的方式。NC在并行计算”。

我部分同意这一观点。当一台旧的超级计算机退役时,我们购买了一台具有更多内存的新并行计算机,这也是因为DRAM芯片随着时间的推移价格越来越便宜,并且在并行计算机的主要组件(处理器,内存,互连等)方面取得了一定程度的平衡。

但是,由于内存是有限的资源,因此有很多关于有效使用内存的研究,而无需向超级计算机添加更多内存来解决更大的问题实例。例如,Sun和Ni提出了内存受限加速的概念,Quinn提出了所谓的可伸缩性功能,该功能可测量每个处理器必须增加的内存量以保持恒定的效率水平。通常,由于并行开销会随着处理器数量的增加而增加,因此我们会保持效率的提高,从而增加解决问题的规模。但是最大的问题大小受主内存量的限制(在是线性的pnp

因此,设计存储器可伸缩并行算法变得越来越重要,因为这些算法对于大问题非常实用。

n3n

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.