【问题标题】:Can I alloc memory bigger than CL_DEVICE_MAX_MEM_ALLOC_SIZE?我可以分配大于 CL_DEVICE_MAX_MEM_ALLOC_SIZE 的内存吗?
【发布时间】:2015-10-29 16:48:31
【问题描述】:

我可以分配比 CL_DEVICE_MAX_MEM_ALLOC_SIZE 更大的内存吗?

我使用的是 NVIDIA GeForce GTX 960(带有 nvidia 驱动程序 352.39 + CUDA 7.5)

GTX960 有 2GB 内存,因此 CL_DEVICE_MAX_MEM_ALLOC_SIZE=512MB(默认为全内存的 1/4)。

但是我的内核需要超过 512MB 的内存。

有没有办法分配大于 CL_DEVICE_MAX_MEM_ALLOC_SIZE 的内存?

【问题讨论】:

    标签: opencl


    【解决方案1】:

    您可以分配比 CL_DEVICE_MAX_MEM_ALLOC_SIZE 更大的内存区域,但请注意,它应该很慢。

    另外,阅读此thread 了解更多信息

    【讨论】:

    • 感谢柑橘的回复。但我找不到如何从您的链接(和链接的链接)分配更大的内存。你能告诉我该怎么做吗?
    • 我认为这不准确。不能分配超过最大值,如果可以,这是实现中的缺陷。当然,您总是可以分配多个最大大小的缓冲区。
    • 正如@DarkZeros 所说,继续分配多个内存区域。但是,是的,这不是最准确的答案,也不是最近的,我在 2 年前做过 OpenCL,现在我只使用 DirectCompute (CS_5_0) 来处理所有需要在 GPU 上计算的东西
    • @DarkZeros 好吧,更准确地说,您不能保证能够分配超过 MAX_MEM_ALLOC_SIZE。 Khronos 文档说,如果你超过它,实现可能返回一个错误。就个人而言,我发现英特尔的驱动程序在尝试超过该数量时确实会失败,而 NVidia 的驱动程序并没有出现在我的设置中(一切正常,我可以成功使用 NVidia 卡上的整个缓冲区。)
    猜你喜欢
    • 2013-06-29
    • 1970-01-01
    • 2013-11-16
    • 2021-06-06
    • 1970-01-01
    • 2014-12-29
    • 2019-06-15
    • 2014-03-02
    • 2018-12-04
    相关资源
    最近更新 更多