OpenCL中参数__local和内核__local之间的区别

时间:2012-02-07 17:46:31

标签: local opencl

有时openCL内核的参数

kernel someName (some globalparameters, __local int* myArray) {

而其他脚本在内核中的某个地方

__local int myArray[length];

这些有什么区别?我认为它们只是语法上的差异,但现在我在官方的AMD官方样本(RadixSort)中看到了评论

__local KV_TYPE localDataArray[TPG*4*2]; // Faster than using it as a parameter !!!
显然,我错了。实际上,当我在我的脚本中尝试它时,它会更快。买为什么?两者都不应该只是数组指针吗?

1 个答案:

答案 0 :(得分:0)

我不确定性能问题,但主要区别不仅仅是语法。将本地缓冲区作为参数传递允许在运行时确定大小。在内核中定义缓冲区本身需要在编译时知道大小。