Parallel processing 基本并行编程概念:N个处理器的搜索成本

Parallel processing 基本并行编程概念:N个处理器的搜索成本,parallel-processing,Parallel Processing,我问这个问题是为了确定一些并行计算的概念 让我们举一个简单的例子:我们有一组n数字,如果我们至少有n/3并行计算机,从中搜索项目的最佳运行时间是多少 我认为这仍然是O(n),但不确定我是否正确。因为大Oh表达式的常量部分可以被擦除吗 谢谢可以是O(1)或O(ln) 给定每台n/3台计算机的n/(n/3)个数字;它们基本上都有3个值。搜索其恒定大小的集合并返回结果(如果在数组中的第k个位置找到,则返回k*(n/3)作为数组中要开始的索引,则返回结果(“0-->未找到”,k)。因此,该值在时间O(1

我问这个问题是为了确定一些并行计算的概念

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

我认为这仍然是
O(n)
,但不确定我是否正确。因为大Oh表达式的常量部分可以被擦除吗

谢谢

可以是O(1)或O(ln)

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

问题在于报告答案。从n/3台机器的响应中选择了一个独特的结果。通常,这需要在机器子集中进行“重复”选择,这可以在O(n)时间内完成,但在并行系统中,通常使用“归约”运算符(如SUM或MAX或…)完成。这样的归约运算符可以(通常是)使用对数归约树来实现

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

这严格取决于底层并行模型。实际上,每个处理器定义一个标志find x,所有处理器执行并行简化的最后简化步骤可能具有不同的复杂性。具体参见通用CRCW婴儿车案例

对于消息传递设置:

  • T(n)=O(n/p+logp)表示p
  • 对于p=O(n),T(n)=O(对数n)
对于共享内存设置:

a) 埃鲁婴儿车

  • T(n)=O(n/p+logp)表示p
  • 对于p=O(n),T(n)=O(对数n)
b) 载人婴儿车

并发读取没有帮助:最终的缩减步骤仍然需要O(logp)时间

  • T(n)=O(n/p+logp)表示p
  • 对于p=O(n),T(n)=O(对数n)
c) 普通CRCW婴儿车

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

  • T(n)=O(n/p)表示p
  • 对于p=O(n),T(n)=O(1)

每台计算机搜索3项。这是O(1)。再次,收集结果是O(n):PAlso,如果这是一个简单的搜索来确定是否存在,你可以选择“谁先报告”(如果你只需要简单的是或否),而忽略其他人;它本质上是“现在”的O(1)(但对于“缺席”则非常糟糕);i、 e.保证
O(1)
如果你知道东西在里面,但只想找到第一个出现的东西。如果你不知道它在那里,你必须等待每个人报告。