Opencl CL_设备、图像、最大缓冲区大小的确切含义是什么

Opencl CL_设备、图像、最大缓冲区大小的确切含义是什么,opencl,Opencl,我试图从OpenCL设备中理解常量CL\u设备\u图像\u最大缓冲区\u大小的含义 表示“从缓冲区对象创建的1D图像的最大像素数。” 我的设备上的值为2^24。但是,如果我从一个大于2^21个元素的缓冲区生成一个图像(通道类型为float,通道顺序为R),读取将变成垃圾-y。它的意思就是它所说的 返回的值取决于实现,但通常如下所示: 假设您有X字节作为可以为mem对象分配的最大系统内存量。假设Y是支持的每像素字节的最大值(这同样取决于支持哪种格式)。然后,该常数的值通常为X/Y或更小。 例如,如

我试图从OpenCL设备中理解常量
CL\u设备\u图像\u最大缓冲区\u大小
的含义

表示“从缓冲区对象创建的1D图像的最大像素数。”


我的设备上的值为2^24。但是,如果我从一个大于2^21个元素的缓冲区生成一个图像(通道类型为float,通道顺序为R),读取将变成垃圾-y。

它的意思就是它所说的

返回的值取决于实现,但通常如下所示: 假设您有
X
字节作为可以为mem对象分配的最大系统内存量。假设
Y
是支持的每像素字节的最大值(这同样取决于支持哪种格式)。然后,该常数的值通常为
X/Y
或更小。 例如,如果图像格式为
CL\u RGBA
CL\u UNSIGNED\u INT32
,则每个像素的字节数为16


假设当你说“读取变成垃圾”时,你的意思是图像像素是垃圾,这肯定不是因为这个常数造成的。你似乎在限制之内。您确定父缓冲区已按通道顺序存储浮点像素吗?

如果从小于2^21个元素的缓冲区创建图像,则可以从图像中读取值,没有问题。如果我使用相同的代码路径创建一个大于2^21的映像,则读取返回0或垃圾。请提供更多详细信息。。1.CL_设备的最大内存分配大小是多少?2.使用clCreateImage 3时指定的图像描述值是多少。您正在运行此操作的OCL设备?