我是 cuda 的新手。我正在为 cuda 中的图像处理编写代码。我的 c 和 cuda 代码如下,我尝试转换为 cuda,但效果不佳。
我的 C 代码:
void imageProcess_usingPoints(int point, unsigned short *img)
{
// doing image process here using point variable value.
}
int main(int argc, char **argv)
{
/* here i define and initialize some variable */
int point=0;
unsigned short *image_data;
// consider that here i read image and store all pixels value in *image_data.
for(int i=0;i<1050;i++,point+=1580)
{
// calling image process function like bluring image.
imageProcess_usingPoints(point,image_data);
/* doing some image process using that point value on 16 bit grayscale image.*/
}
return 0;
}
我试图将我的 c 代码转换为 cuda,但它是错误的。所以,我尝试过的cuda代码如下。
__global__ void processOnImage(int pointInc)
{
int line = blockIdx.x * blockDim.x + threadIdx.x;
int point=((line)*pointInc));
/* here i m not getting exact vaue of point variable as same like in c code */
/* doing image processing here using point value */
}
int main(int argc, char **argv)
{
/* here i define and initialize some variable */
int pointInc=1580;
static const int BLOCK_WIDTH = 25;
int x = static_cast<int>(ceilf(static_cast<float>(1050) / BLOCK_WIDTH));
const dim3 grid (x,1);
const dim3 block(BLOCK_WIDTH,1);
processOnImage<<<grid,block>>>(pointInc);
return 0;
}
在 cuda 代码的 processOnImage 函数中,我没有像上面的 c 代码那样获得点(int 点)变量的确切值。那么我在 cuda 代码中做错了什么。或者如何在 c 中为我的代码使用该块和线程。