所以,我知道如果我有n个数据和p个处理器,像mergesort这样的算法会将这个数据分成每个处理器的n / p数据,并为数据的每个子部分运行顺序排序算法。然后它会将它们重新组合在一起(对它们进行排序)。 我想知道的是,如果这总是比简单地使用n上的顺序mergesort更快? 由于我们对n / p数据进行操作,但由于我们有额外的时间用于并行操作,我看到时间复杂度在下降...
我在想,如果我设置了两个方程式,它们看起来应该是这样的:
N / p log2 N / p + 2N-2 = N * log2 N
其中左侧是并行算法,右侧是非平行算法。这是正确的,我将如何解决它?
答案 0 :(得分:0)
以2个处理器为例。为简单起见(并且由于你没有另外说明),我将假设共享内存。
顺序情况将依次为:
并行案例将执行相同的步骤,但执行步骤1和步骤1 2并联;唯一增加的工作是管理进程/线程的任何开销。
随着处理器数量的增加,并行部分所需的时间将减少,加快速度,直到它被管理并行位的开销所取代。