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)
- T(n)=O(n/p+logp)表示p
- 对于p=O(n),T(n)=O(对数n)
- T(n)=O(n/p+logp)表示p
- 对于p=O(n),T(n)=O(对数n)
- T(n)=O(n/p)表示p
- 对于p=O(n),T(n)=O(1)
O(1)
如果你知道东西在里面,但只想找到第一个出现的东西。如果你不知道它在那里,你必须等待每个人报告。