【问题标题】:What's the difference between parallel cost and parallel work?并行成本和并行工作有什么区别?
【发布时间】:2015-05-08 15:15:10
【问题描述】:

我读过一篇论文,其中将(并行)算法的并行成本定义为 CP(n) = p * TP (n),其中p 是处理器数量,T 是处理时间,n 是输入。一个算法是成本最优的,如果 CP(n) 近似为常数,即如果算法在同一输入上使用两个处理器而不是一个处理器,则它只需要一半时间。

还有一个概念叫做并行工作,我没有完全掌握。 论文称它测量了执行的并行 OP 的数量。 一个算法是工作最优的,如果它执行的操作数与它的顺序对应物一样多(渐近地)。 成本最优算法总是工作最优,但反之则不然。

有人能说明并行工作的概念并说明并行成本的异同吗?

【问题讨论】:

  • 实际提供论文链接以获取更多上下文会有所帮助。
  • 您可以简单地“并行化”任何顺序算法,方法是在一个处理器上运行它并让所有其他处理器空闲。这是工作最优的,但它的并行成本比原来的顺序算法差一个因子等于处理器的数量。
  • @b4hand 这是一个讲座的私人脚本,所以我想我不应该发布它。
  • 看起来作者的意思是你的算法瘫痪没有任何额外的成本。这并不总是正确的,例如他们中的一些人需要额外的内务管理,如果他们不需要,那么表明时间是最优的就很简单了,如果不是,那么它仍然可以是成本最优的(近似值可能接近你的时间通缉)
  • 感谢 cmets 和答案。我现在有了更好的理解,并添加了自己的详细答案。

标签: performance algorithm optimization parallel-processing gpgpu


【解决方案1】:

听起来并行工作只是衡量所有进程并行运行的指令总数,但只计算一次并行运行的指令。如果是这种情况,那么它与并行成本等式中的时间项更密切相关。可以这样想:如果算法的并行版本比顺序版本运行更多的指令——这意味着它不是工作最优的,假设所有指令的持续时间相同,它必然需要更多的时间.通常,这些额外指令位于并行算法的开头或结尾,并被视为并行算法的开销。它们可以对应于额外的簿记或通信或结果的最终聚合。

因此,不是工作最优的算法不可能是成本最优的。

【讨论】:

  • 如果并行版本执行更多操作,但更好地利用缓存,它仍然可以是 cost-optimal,但不会是 work-optimal ,因为它执行更多指令。
【解决方案2】:

另一种称为“并行成本”的方式是“上下文切换成本”,尽管它也可能来自不同线程之间的相互依赖关系。

考虑排序。

如果您并行实现Bubble Sort,其中每个线程只进行下一个比较,您将需要付出巨大的代价来“并行”运行它,以至于它本质上是算法的一个混乱的顺序版本而且您的并行工作基本上为零,因为大多数线程大部分时间都在等待。

现在将其与 Quick Sort 进行比较,并为原始数组的每个拆分实现一个线程 - 线程不需要来自其他线程的数据,渐近对于更大的起始数组来说,旋转的成本这些线程将由完成工作的并行性质支付......如果系统具有无限的内存带宽。实际上,与内存访问通道相比,旋转更多线程是不值得的,因为通过共享顺序访问内存,线程之间仍然具有不可见的(从代码角度来看)依赖关系

【讨论】:

    【解决方案3】:

    我认为并行成本并行工作是同一枚硬币的两个方面。它们都是加速的措施, 后者是支持前者的理论概念。

    让我们将 n 维向量加法视为一个易于并行化的问题,因为它可以分解为 n 个独立的任务。

    问题本质上是工作最优,因为如果算法并行运行,并行工作不会改变,总是有n 需要添加的向量分量。

    考虑到并行成本,如果不在(虚拟)机器上执行算法就无法完成,因为会出现内存带宽短缺等实际限制。因此,工作最优算法只能是成本最优,如果硬件(或硬件访问模式)允许完美执行和划分问题 - 以及时间。

    成本最优是一种更强烈的需求,正如我现在意识到的那样,这只是efficiency的另一个例证

    在正常情况下,cost-optimal 算法也将是work-optimal, 但是如果通过缓存、内存访问模式等获得的加速是超线性的, 即两个处理器的执行时间是预期的十分之一而不是预期的一半,执行更多工作的算法,因此不是工作最优,仍然是成本-最佳

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 2020-07-23
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 2020-04-16
      相关资源
      最近更新 更多