CREW和EREW Prams上的布尔OR和AND问题

时间:2013-09-21 02:05:47

标签: algorithm parallel-processing

我正在学习PRAM算法。因为我们可以通过使用以下方法在CRCW PRAM的O(1)时间内计算布尔OR。

设A [0] = A [1] | A [2] | A [3] ... | A [n]是n位A [1..n]的布尔OR。假设A [0]为零开始。在第一时间步骤中,处理器i(1< = i< = n)读取存储器位置A [i]并且如果A [i]是1则继续在存储器位置A [0]中写入1。 A [i]可以是1,几个处理器可以同时写入A [0]。因此,对于CRCW,我们可以在O(1)时间内计算布尔OR。

类似地,我们可以为CRCW解决布尔AND

我想知道如何为CREW和EREW解决这个问题。算法的时间和处理器界限是什么?

1 个答案:

答案 0 :(得分:1)

我认为独占读取不是问题,因为每个处理器都在读取它自己的位。问题在于独占写入部分,因为它们都必须用A [0]写入。我认为最好的方法是制作一种锦标赛树。所以你可以OR比特并将结果推广到下一个级别,直到你有一个冠军。然后你可以把最终结果写成A [0]。这将是O(log n)。