矩阵的平均四分之一

时间:2013-01-02 18:06:53

标签: c++ c arrays cuda

如果我有一个 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内核实现这一点?

1 个答案:

答案 0 :(得分:2)

进行此类操作没有特别的问题。立即浮现在脑海中的方法就像:

  1. 标记您希望平均的每个子矩阵
  2. 在每个标记区域上执行前缀和,并将结果总和转换为均值
  3. 使用相应的平均值填充每个标记区域。
  4. CUDA工具包附带的推力模板库包含了实现此目的所需的大部分算法。唯一需要的用户代码将是一个标记每个子矩阵的仿函数,写入应该非常简单。