我遇到了转置图片的问题:
我调用内核方法:
// index of the pixel on the image
int index_in = index_x + index_y * width;
int index_out = index_x + index_y*height;
// Allocate the shared memory
__shared__ unsigned int onchip_storage[16][16];
// Load the inputs to the shared memory
onchip_storage[threadIdx.y][threadIdx.x] = in[index_in];
// Save the output value to the memory
out[index_out] = onchip_storage[threadIdx.x][threadIdx.y];
我将图像旋转但不知何故颜色不是原始的。有什么想法吗?
提前致谢。
答案 0 :(得分:1)
假设您的RGB组件是交错的,那么您的算法无法正确处理这三个组件。你真的需要让你的瓷砖尺寸为宽度的3倍,例如18 x 18.然后当你进行转置时,你需要转置3 x 4 = 12字节宽的元素。
答案 1 :(得分:1)
你能使用矩阵转置例程,“Matrix”是int3元素的宽度*高度吗?这些已经很好地优化了 - 特别是Nvidia示例代码中的“对角线”变体比天真的实现要快得多。