У меня есть какое-то фильтрующее ядро, что-то вроде этого:
__kernel void filterKernel (__global float4 *filter, __global float4* in_array, __global float4* out_array)
{
...
out_array[tid] = in_array[tid] * filter[fid];
...
}
kernel filterKernel вызывается несколько раз (около 1000 раз).
Переменная filter представляет собой массив чисел с плавающей запятой, которые никогда не меняют своих значений (остаются одинаковыми для всех рабочих групп и для всех вызовов ядра).
in_array содержит 32768 чисел с плавающей запятой.
Как лучше всего объявить эту переменную filter? __постоянный? __местный? Может быть, разместить «const» здесь и там? Что больше всего помогает компилятору? Что делает код самым быстрым?