在OpenCL中设置本地浮点

在OpenCL中设置本地浮点,opencl,Opencl,我试图设置新的uu本地浮点,但是当我将浮点的大小作为参数传递时,我得到了错误 此代码给出错误: int TILE_DIM = get_local_size(0)*get_local_size(1); //local size __local float buffer[TILE_DIM]; 此代码不包括: int TILE_DIM = get_local_size(0)*get_local_size(1); //local size __local float buffer[512];

我试图设置新的uu本地浮点,但是当我将浮点的大小作为参数传递时,我得到了错误

此代码给出错误:

int TILE_DIM = get_local_size(0)*get_local_size(1);  //local size
__local float buffer[TILE_DIM]; 
此代码不包括:

int TILE_DIM = get_local_size(0)*get_local_size(1); //local size
__local float buffer[512]; 

在内核运行之前,必须始终分配本地内存。因此,不可能有具有内核运行时长度的数组。但是,您可以将指向(未初始化的)
\uu local
内存的指针作为参数传递给内核。可以在调用中设置此项的长度。(有关本地内存内核参数的详细信息,请查看链接文档。)因此,它是每个排队内核的可变长度,而不是每个工作组。

可以将
\u local
数组的大小传递给
选项中的
参数:
“-DTILE\u DIM=512”

例如:
clBuildProgram(程序,1,&device.device\u id,“-DTILE\u DIM=512”,NULL,NULL)

这样,可以在内核构建时确定本地数组的大小