Недавно я играл с OpenCL и могу писать простые ядра, использующие только глобальную память. Теперь я хотел бы начать использовать локальную память, но я не могу понять, как использовать get_local_size()
и get_local_id()
для вычисления одного «фрагмента» вывода за раз.
Например, предположим, что я хотел преобразовать пример ядра Apple OpenCL Hello World во что-то, что использует локальную память. Как бы ты это сделал? Вот исходный код ядра:
__kernel square(
__global float *input,
__global float *output,
const unsigned int count)
{
int i = get_global_id(0);
if (i < count)
output[i] = input[i] * input[i];
}
Если этот пример не может быть легко преобразован во что-то, что показывает, как использовать локальную память, подойдет любой другой простой пример.