用cuda转置图像

时间:2011-09-28 16:52:56

标签: cuda

我遇到了转置图片的问题:

我调用内核方法:

    // 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];

我将图像旋转但不知何故颜色不是原始的。有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

假设您的RGB组件是交错的,那么您的算法无法正确处理这三个组件。你真的需要让你的瓷砖尺寸为宽度的3倍,例如18 x 18.然后当你进行转置时,你需要转置3 x 4 = 12字节宽的元素。

答案 1 :(得分:1)

你能使用矩阵转置例程,“Matrix”是int3元素的宽度*高度吗?这些已经很好地优化了 - 特别是Nvidia示例代码中的“对角线”变体比天真的实现要快得多。