CL_DEVICE_IMAGE_MAX_BUFFER_SIZE究竟是什么意思

时间:2014-06-04 15:55:53

标签: opencl

我试图了解常量CL_DEVICE_IMAGE_MAX_BUFFER_SIZE对OpenCL设备的意义。

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

我的设备上的值是2 ^ 24。但是,如果我从大于2 ^ 21个元素的缓冲区中创建图像(channel_type是float,channel_order是R),则读取将变为垃圾。

1 个答案:

答案 0 :(得分:0)

这正是它所说的内容。

返回的值取决于实现,但通常它将如下所示: 假设您有X个字节作为可以为mem对象分配的最大系统内存量。并且Y是支持的每个像素的最大字节值(这又取决于支持的所有格式)。那么常量的值通常为X/Y或更小。 例如,如果您的图片格式为CL_RGBACL_UNSIGNED_INT32,则每个像素的字节数为16

假设你的意思是图像像素是垃圾,当你说"读取变成垃圾"时,它肯定不会因为这个常数而引起。你似乎在极限之内。您确定父缓冲区是否以CL_R频道顺序存储浮动像素?