2

如果我有一个N×N二维数组,并且我想将它的每个四分之一平均为相同的数字,如下所示:

matrix = [ 1 2 4 6
           6 7 1 1
           9 8 3 6
           4 7 9 2 ]

并在其上应用 cuda 内核后,结果将是:

result = [ 4 4 3 3
           4 4 3 3
           7 7 5 5
           7 7 5 5 ]

这如何用 C cuda 内核实现?

4

1 回答 1

2

做这种操作没有什么特别的问题。立即浮现在脑海中的方法是:

  1. 标记您希望平均的每个子矩阵
  2. 对每个标记区域执行前缀求和,并将结果和转换为均值
  3. 用相应的平均值填充每个标记区域。

CUDA 工具包附带的推力模板库包含实现此功能所需的大部分算法。唯一需要的用户代码将是一个标记每个子矩阵的函子,这应该很容易编写。

于 2013-01-02T18:25:18.763 回答