我正在尝试为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)