Недавно я играл с 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];
}
Если этот пример не может быть легко преобразован во что-то, что показывает, как использовать локальную память, любой другой простой пример будет делать.