WLiu
1
I write the code like this
__global__
void initBlob(const unsigned char *in, unsigned char *out, size_t *indexTab, int total2D)
{
size_t i = blockIdx.x * blockDim.x + threadIdx.x;
if(i < total2D)
{
out[i] = in[i];
if(255 == in[i])
{
indexTab[i] = i;
printf("index[%d] = %d ",i, indexTab[i]);
}
}
}
but the value of indexTab[i] always be an zero. what’ wrong here, please help me.
inJeans
2
Is it possible that 255 == in[i] only when i == 0? Could you post more code, or the output of your program?
A size_t is a 64-bit quantity on a 64-bit platform.
But the %d printf format specifier indicates printing of a 32-bit quantity.
Make indexTab an int quantity instead of a size_t quantity, or else change the printf format specifier to %lu
and don’t forget to change “size_t i” definition too