Индексирование массива Opencl 3D - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть 3D-массив (высота, ширина, глубина). Мой глобальный рабочий размер (высота * ширина * глубина). и локальный размер работы равен 1. В коде ядра, как я могу получить смещение строки и смещение столбца?

Я делаю операцию свертки в opencl. В C мы делаем следующее:

// iterating through number of filters
for(c = 0; c < number_of_filters; c++)
{
    for(h = 0; h < out_height; h++)
    {
        for(w = 0; w < out_width; w++)
        {
           vert_start = h * stride;
           vert_end = vert_start + f_size ;
           hor_start = w * stride;
           hor_end = hor_start + f_size;

           sum = 0;
           for(c_f = 0; c_f < input_channel; c_f++)
           {
               for(h_f = vert_start; h_f < vert_end; h_f++)
               {
                   for(w_f = hor_start; w_f < hor_end; w_f++)
                   {
                      // computing convolution
                      sum = sum + 
                      (INPUT[(c_f * input_height * input_width) + (h * input_width) + w] * 
                       FILTER[(c_f * filt_height* filt_width) + (h_f * filt_width) + w_f)]);
                   }
               }
           }
           // storing result in output
           OUTPUT[(c * out_height * out_width) + (h * out_width) + w] = sum;
        }
    }
}

Я не понимаю, как получить смещение строки и столбца из изображения для свертки в opencl?

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