小编hub*_*ubs的帖子

使用CUDA C的二维矩阵的积分图像或总面积表

我正在尝试为2D矩阵计算求和区域表,其中行和列的数量不相等.我遇到了一个小问题,我的代码似乎在行和列相等的情况下运行正常,但是当行和列不相等时,它无法计算最终输出的最后一行.问题是我无法弄清楚为什么会这样.

积分图像/求和面积表的基本算法:

基本上,在积分和中,每个像素或索引元素计算其上方和后方的所有矩阵元素的总和.例如,对于具有以下元素的3x2输入数组:

 [5, 2|
 |5, 2|  
 |5, 2] 
Run Code Online (Sandbox Code Playgroud)

输出数组中的积分和如下:

 [5,   7|
 |10, 14|  
 |15, 21] 
Run Code Online (Sandbox Code Playgroud)

基本上以下是我在CUDA C中尝试做的事情:

for(int matrixElement_y_index=0; matrixElement_y_index<=total_rows-1; matrixElement_y_index++)
{
    //matrixElement_x_index and matrixElement_y_index represent (x,y) indices of each matrix element
    for(int matrixElement_x_index=0; matrixElement_x_index<=total_columns-1; matrixElement_x_index++)
    {
        int temp=0; 

        for(int r=0;r<=(matrixElement_y_index);r++)
        {
            for(int c=0; c<=matrixElement_x_index;c++)
            {
                temp=temp+input[c][r];
            }
        }

        output[matrixElement_y_index][matrixElement_x_index]=temp;
    }
}
Run Code Online (Sandbox Code Playgroud)

我到目前为止提出的CUDA C代码如下:

#include <iostream>
#include <cuda_runtime.h>

using namespace std;

__global__ void image_integral(int *a, int*b, int width_x,int width_y)
{
    // Thread Ids equal to …
Run Code Online (Sandbox Code Playgroud)

c cuda gpgpu image-processing gpu-programming

2
推荐指数
1
解决办法
2428
查看次数

标签 统计

c ×1

cuda ×1

gpgpu ×1

gpu-programming ×1

image-processing ×1