Parallel processing 并行约简算法的时间复杂度

Parallel processing 并行约简算法的时间复杂度,parallel-processing,cuda,time-complexity,gpu,reduction,Parallel Processing,Cuda,Time Complexity,Gpu,Reduction,目前我正在学习GPU架构及其概念。在并行简化技术中,以下NVIDIA指南开始/P+log N的第29张幻灯片上显示的时间复杂度如何?我知道对于N个线程,它将是Olog N。如果我们有P个线程并行可用,那么时间复杂度应该是/P*log P。对吗?我哪里错了 我对cuda不熟悉,但通常情况下,你也很熟悉 首先是每个处理器上的本地缩减,这将采用on/P,然后 计算P局部结果的缩减,这需要Olog P步骤。 因此,您可以使用/p+log p.我不熟悉cuda,但通常您也会这样做 首先是每个处理器上的本地

目前我正在学习GPU架构及其概念。在并行简化技术中,以下NVIDIA指南开始/P+log N的第29张幻灯片上显示的时间复杂度如何?我知道对于N个线程,它将是Olog N。如果我们有P个线程并行可用,那么时间复杂度应该是/P*log P。对吗?我哪里错了


我对cuda不熟悉,但通常情况下,你也很熟悉

首先是每个处理器上的本地缩减,这将采用on/P,然后 计算P局部结果的缩减,这需要Olog P步骤。
因此,您可以使用/p+log p.

我不熟悉cuda,但通常您也会这样做

首先是每个处理器上的本地缩减,这将采用on/P,然后 计算P局部结果的缩减,这需要Olog P步骤。

因此,您得到ON/P+Log.P.

< P>我想用一个例子来解释这个,考虑这个数组,n=8个元素< /P>
1  2  3  4  5  6  7  8
并行还原将在以下步骤中进行

1  2  3  4  5  6  7  8
  3    7      11   15
    10          26
          36
如果你计算缩减操作的数量,我们在第一步、第二步和第三步分别有4、2和1。因此,我们的操作总数是4+2+1=7=N-1,我们在上做所有的缩减,我们也有log8=3,这是以2个步骤为基础的对数,所以我们支付了做这些步骤的成本,这是OlogN。因此,如果我们使用一个线程以这种方式降低成本,我们会增加这两个成本,因为这两个成本是单独发生的,并且我们有ON+logN。其中ON是执行所有操作的成本,而OlogN是执行所有步骤的成本。现在没有办法并行化步骤的成本,因为它们必须按顺序进行。但是,我们可以使用多个线程来执行操作,并将ON成本分摊到ON/P。因此

Total cost = O(N/P + logN)

我想用一个例子来解释这个,考虑这个数组,n=8个元素

1  2  3  4  5  6  7  8
并行还原将在以下步骤中进行

1  2  3  4  5  6  7  8
  3    7      11   15
    10          26
          36
如果你计算缩减操作的数量,我们在第一步、第二步和第三步分别有4、2和1。因此,我们的操作总数是4+2+1=7=N-1,我们在上做所有的缩减,我们也有log8=3,这是以2个步骤为基础的对数,所以我们支付了做这些步骤的成本,这是OlogN。因此,如果我们使用一个线程以这种方式降低成本,我们会增加这两个成本,因为这两个成本是单独发生的,并且我们有ON+logN。其中ON是执行所有操作的成本,而OlogN是执行所有步骤的成本。现在没有办法并行化步骤的成本,因为它们必须按顺序进行。但是,我们可以使用多个线程来执行操作,并将ON成本分摊到ON/P。因此

Total cost = O(N/P + logN)