2

关于 NVIDIA GPU,High Performance and Scalable GPU Graph Traversal论文中的作者说:

1-一系列内核调用是批量同步的:每个内核最初都呈现与前一个结果的一致视图。

2-Prefix-sum 是一种批量同步算法原语

我无法理解这两点(虽然我知道基于 GPU 的前缀和),可以帮助我这个概念。

4

1 回答 1

2

1-一系列内核调用是批量同步的:每个内核最初都呈现与前一个结果的一致视图。

它是关于并行计算模型的:每个处理器都有自己的内存,速度很快(就像 CPU 中的缓存),并且使用存储在那里的值执行计算而没有任何同步。然后进行非阻塞同步 - 处理器放置它迄今为止计算的数据并从其邻居获取数据。然后是另一个同步 - 屏障,这使得它们都互相等待。

2-Prefix-sum 是一种批量同步算法原语

我相信这就是 BSP 模型的第二步——同步。这就是处理器存储和获取下一步数据的方式。

该模型的名称暗示它是高度并发的(许多进程相对于彼此同步工作)。这就是我们到达第二点的方式。

就我们希望名副其实(高度并发)而言,我们希望在可能的情况下摆脱顺序部分。我们可以通过前缀和来实现。

考虑前缀和关联运算符+。然后 scan on set[5 2 0 3 1]返回 set [0 5 7 7 10 11]。所以,现在我们可以替换这样的顺序伪代码:

foreach i = 1...n
    foo[i] = foo[i-1] + bar(i);

使用这个伪代码,现在可以是并行的(!):

foreach(i)
    baz[i] = bar(i);
scan(foo, baz);

这是非常幼稚的版本,但可以解释一下。

于 2013-10-06T02:34:33.273 回答