【发布时间】:2014-07-25 09:08:06
【问题描述】:
我试图了解常量 CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 在 OpenCL 设备中的含义。
This page 表示“从缓冲区对象创建的一维图像的最大像素数。”。
我设备上的值是 2^24。但是,如果我从大于 2^21 个元素的缓冲区制作图像(channel_type 是 float,channel_order 是 R),读取将变成垃圾-y。
【问题讨论】:
标签: opencl
我试图了解常量 CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 在 OpenCL 设备中的含义。
This page 表示“从缓冲区对象创建的一维图像的最大像素数。”。
我设备上的值是 2^24。但是,如果我从大于 2^21 个元素的缓冲区制作图像(channel_type 是 float,channel_order 是 R),读取将变成垃圾-y。
【问题讨论】:
标签: opencl
它的意思正是它所说的。
返回的值取决于实现,但通常看起来像这样:
假设您有 X 字节作为您可以为 mem 对象分配的最大系统内存量。并且说Y 是支持的每像素字节的最大值(这又取决于支持的所有格式)。那么常量的值通常为X/Y 或更小。
例如,如果您的图像格式是CL_RGBA 和CL_UNSIGNED_INT32,那么每个像素的字节数为 16
假设当您说“读取变成垃圾”时,您的意思是图像像素是垃圾,这绝对不是因为这个常数引起的。你似乎在限制之内。您确定父缓冲区已按CL_R 通道顺序存储浮点像素吗?
【讨论】: