基本并行编程概念:使用N个处理器进行搜索的成本

时间:2012-05-15 10:25:36

标签: parallel-processing

我问这个问题,以确保并行计算概念的一些概念。

让我们举一个简单的例子:我们有一组n个数字,如果我们至少有n/3个并行计算机,那么从中搜索项目的最佳运行时间是什么?< / p>

我认为这仍然是O(n),但不确定我是否正确。既然大哦表达的恒定部分可以删除?

谢谢

2 个答案:

答案 0 :(得分:3)

可能是O(1)或O(ln n)。

给你的每台n / 3台计算机n /(n / 3)个数字;它们基本上都得到3个值。它们需要单独恒定的时间来搜索它们的恒定大小集并返回结果(“0 - >未找到”,如果在数组中的第k个位置找到k,如果每个都给定K *(n / 3)作为数组中的索引启动)。因此,在时间O(1)中,值找到

问题在于报告答案。有些东西在n / 3机器的响应中选择了一个独特的结果。通常,这需要在机器子集中进行“重复”选择,这可以在O(n)时间内完成,但在并行系统中通常使用“简化”运算符(例如SUM或MAX或......)来完成。这种缩减运算符可以(并且通常是)使用对数的来实现。

某些并行硬件具有非常快速的缩减硬件,但它仍然是对数的。   奇怪的是,如果你有n / 1000个CPU,你仍然会得到O(1)搜索时间(带有一个很大的常数),以及O(ln n)减少时间和一个非常小的常数。如果忽略O符号,它将“看起来”像恒定时间。

答案 1 :(得分:0)

这严格依赖于底层并行模型。实际上,每个处理器定义标志 Found x 并且所有处理器执行并行减少的最终减少步骤可能具有不同的复杂性。特别参见COMMON CRCW PRAM案例。

对于消息传递设置:

  • T(n)= O(n / p + log p),p
  • T(n)= O(log n),p = O(n)

对于共享内存设置:

a)EREW PRAM

  • T(n)= O(n / p + log p),p
  • T(n)= O(log n),p = O(n)

b)CREW PRAM

并发读取没有帮助:最后的还原步骤仍然需要O(log p)时间

  • T(n)= O(n / p + log p),p
  • T(n)= O(log n),p = O(n)

c)常见的CRCW PRAM

并发写入确实有帮助:最后的缩减步骤现在需要O(1)时间,那些带有标志 Found x 的处理器可以在共享位置同时写入相同的值

  • T(n)= O(n / p),p
  • T(n)= O(1),p = O(n)