【问题标题】:What exactly does CL_DEVICE_IMAGE_MAX_BUFFER_SIZE meanCL_DEVICE_IMAGE_MAX_BUFFER_SIZE 到底是什么意思
【发布时间】: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


    【解决方案1】:

    它的意思正是它所说的。

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

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

    【讨论】:

    • 如果我从小于 2^21 个元素的缓冲区创建图像,那么我可以从图像中读取值没有问题。如果我使用相同的代码路径创建大于 2^21 的图像,则读取返回 0 或垃圾。
    • 你能否给我更多的细节.. 1.什么是CL_DEVICE_MAX_MEM_ALLOC_SIZE? 2. 使用 clCreateImage 时您指定的 image_desc 值是多少 3. 您正在运行它的 OCL 设备?
    猜你喜欢
    • 2017-08-07
    • 2017-07-20
    • 2014-09-23
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多