我最近一直在玩 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];
}
如果这个例子不能轻易地转换成展示如何使用本地内存的东西,任何其他简单的例子都可以。