gpt4 book ai didi

caching - 当我使用超过 64kb 的常量缓存时,为什么我的内核不会失败? (OpenCL/CUDA)

转载 作者:行者123 更新时间:2023-12-04 06:42:12 27 4
gpt4 key购买 nike

我在使用常量缓存的内核上运行了一些测试。如果我使用 16,000 个浮点数(16,000 * 4KB = 64KB),那么一切都会顺利进行。如果我使用 16,200,它仍然运行流畅。如果我使用 16,400 个浮点数,我的结果中会出现错误(不是来自 OpenCL)。难道只是技术上有 64.x KB 的常量缓存可用?如果我正好使用 16,000 个浮点数,我是否应该相信我的代码?通常我希望当你使用东西达到规定的限制时代码会中断。

最佳答案

您可以并且应该使用 OpenCL clGetDeviceInfo API 和参数 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 查询它。 OpenCL 1.1 规范规定,符合要求的实现必须提供至少 64K 字节,这可能是您的设备正在实现的。

如果超过此限制,则 OpenCL 应该会给您一个错误,或者为您透明地将常量数组移动到全局内存数组中。

如果它没有返回错误,而是给你不好的结果,那就是你的 OpenCL 实现中的一个错误。不用太惊讶,他们都还不是很成熟。您绝对应该将错误报告给供应商。 (我假设是 NVidia,因为您引用了 CUDA)(当然,在确保您安装了最新版本之后。)

关于caching - 当我使用超过 64kb 的常量缓存时,为什么我的内核不会失败? (OpenCL/CUDA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com