【问题标题】:Can gpu use swap space when its ram is full?当内存已满时,gpu 可以使用交换空间吗?
【发布时间】:2014-12-13 23:26:06
【问题描述】:

我正在使用 OpenCL 进行一些 gpu 计算,我需要创建一个大小约为 5 GB 的缓冲区。我的笔记本电脑有一个集成的 gpu,内存大小为 1.5 GB。我试图运行代码,但它给出了错误的结果。所以我想这是因为 gpu 的 ram 已满。我的问题是,当内存已满时,gpu 是否可以使用一些“交换空间”(或虚拟内存)?我知道cpu有这个机制。但我不确定gpu。

【问题讨论】:

    标签: memory-management opencl gpgpu


    【解决方案1】:

    不,它不能(至少在大多数 GPU 上)。因为 GPU 通常使用自己的内存(显卡上的 RAM)。

    此外,您内核中的OpenCL 代码不会执行任何malloc(在内核内部)。你将使用clCreateBuffer

    【讨论】:

    • 我相信clCreateBuffer 被限制在 CL_DEVICE_MAX_MEM_ALLOC_SIZE,这比 GPU 内存大小要小一些。也许这就是他的问题?
    • @Clifford 我刚刚检查了我的 gpu 的 CL_DEVICE_MAX_MEM_ALLOC_SIZE。有趣的是,它返回 4 GB,这是我笔记本电脑内存的大小。我有一个集成的 Intel Iris 显卡。操作系统说它只有 1.5 GB 的视频内存。所以看起来 gpu 可以利用总内存。
    • @andy90 : 如果主机是 32 位,即使使用虚拟内存也无法寻址 >4Gb。
    【解决方案2】:

    这取决于 GPU 以及它是否具有对主机内存的 MMU 和 DMA 访问权限。

    具有 MMU 的 GPU 可以虚拟化 GPU 和主机内存,因此它可以显示为单个地址空间,物理主机内存访问由 DMA 传输处理。我想如果您的 GPU 具有已经完成的功能;在这种情况下,您的问题很可能在其他地方。

    【讨论】:

    • 恕我直言,大多数真正的 GPU(尤其是外部 NVIDIA 或 AMD/ATI 显卡上的那些)没有 MMU。 AMD 的 APU 处理器是个例外。
    • @BasileStarynkevitch:我不是专家;我做了一点研究。 This 表明它在技术上是可行的,而 2006 年的 this 表明它已经完成了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2015-09-14
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2010-09-20
    • 2012-10-24
    相关资源
    最近更新 更多