0

例如,给定一个二维整数数组

3 3 1 1 1

3 3 3 1 1

3 3 3 3 1

3 3 3 2 2

3 3 7 2 2

是否有一种高效的 GPU 算法,可以生成所有出现数字的列表?例如

1 2 3 7

对于上面的二维数组。

该列表不需要排序(例如 3 2 1 7 也可以)。

4

1 回答 1

1

假设没有太大的整数范围需要处理(并且这些是非负整数),您可以创建一个新数组,该数组的长度与原始数组中可能的整数范围的长度相同,值初始化为零。

然后,当一个线程找到一个数字时,它会将数组的索引加一(所以如果我们看到整数 4,我们会做类似的事情result[4]++。我们不需要在这里同步,因为我们只关心是否此结果数组的给定索引的值是否为零。

当然,如果我们也期望负整数也可以这样做 - 我们只需要结果数组中的两倍空间。

于 2012-11-19T03:33:10.097 回答