0

私は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コードのようにpoint(int point)変数の正確な値を取得できません。それで、cudaコードで何が間違っていますか。または、c で私のコードにそのブロックとスレッドを使用する方法。

4

1 に答える 1