0

我有以下代码片段:

// main.cu

#define thread 16

dim3 blocks( ( width + thread - 1 ) / thread, ( height + thread - 1 ) / thread );

dim3 threads( thread, thread );

kernel<<<blocks, threads>>>( dev_data, width, height );

// kernel function

__global__ void kernel( uchar *data, int width, int height ) {

// map from threadIdx/blockIdx to pixel position

int x = threadIdx.x + blockIdx.x * blockDim.x;

int y = threadIdx.y + blockIdx.y * blockDim.y;

int offset = x + y * blockDim.x * gridDim.x;

data[offset * 3 + 0] = 255;

data[offset * 3 + 1] = 0;

data[offset * 3 + 2] = 0;
}

当我执行它时,只有接近一半的像素变蓝。我究竟做错了什么?我认为它与索引有关。

4

0 回答 0