перенести изображение в cuda - PullRequest
       20

перенести изображение в cuda

0 голосов
/ 28 сентября 2011

У меня проблема с транспонированием изображения:

Я вызываю метод ядра:

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

1 голос
/ 15 апреля 2012

Вы можете просто использовать матричные процедуры транспонирования, где "Matrix" - это ширина * высота элементов int3? Они уже оптимизированы очень хорошо - в частности, «диагональный» вариант в примере кода Nvidia намного быстрее, чем наивная реализация.

1 голос
/ 28 сентября 2011

Если ваши RGB-компоненты чередуются, то ваш алгоритм неправильно обрабатывает три компонента.Вам действительно нужно сделать размер плитки кратным 3 по ширине, например 18 x 18. Затем, когда вы выполняете транспонирование, вам нужно транспонировать элементы, которые имеют ширину 3 x 4 = 12 байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...