我试图了解常量CL_DEVICE_IMAGE_MAX_BUFFER_SIZE
对OpenCL设备的意义。
This page表示"从缓冲区对象创建的1D图像的最大像素数。"。
我的设备上的值是2 ^ 24。但是,如果我从大于2 ^ 21个元素的缓冲区中创建图像(channel_type是float,channel_order是R),则读取将变为垃圾。
答案 0 :(得分:0)
这正是它所说的内容。
返回的值取决于实现,但通常它将如下所示:
假设您有X
个字节作为可以为mem对象分配的最大系统内存量。并且Y
是支持的每个像素的最大字节值(这又取决于支持的所有格式)。那么常量的值通常为X/Y
或更小。
例如,如果您的图片格式为CL_RGBA
和CL_UNSIGNED_INT32
,则每个像素的字节数为16
假设你的意思是图像像素是垃圾,当你说"读取变成垃圾"时,它肯定不会因为这个常数而引起。你似乎在极限之内。您确定父缓冲区是否以CL_R
频道顺序存储浮动像素?