【问题标题】:CPU and GPU memory sharingCPU 和 GPU 内存共享
【发布时间】:2019-03-19 12:53:15
【问题描述】:

如果(离散)GPU 有自己的视频 RAM,我必须将数据从 RAM 复制到 VRAM 才能使用它们。但是如果 GPU 与 CPU 集成(例如 AMD Ryzen)并共享内存,我是否仍然需要进行复制,或者它们可以交替访问同一个内存块?

【问题讨论】:

    标签: gpu opencl shared-memory gpgpu video-memory


    【解决方案1】:

    在集成显卡的情况下可以避免复制,但此功能是特定于平台的,并且对于不同的供应商可能会有不同的工作方式。

    How to Increase Performance by Minimizing Buffer Copies on Intel® Processor Graphics 文章描述了如何为 Intel 硬件实现这一点:

    要创建零复制缓冲区,请执行以下操作之一:

    使用 CL_MEM_ALLOC_HOST_PTR 并让运行时处理为您创建一个零拷贝分配缓冲区

    如果您已经拥有数据并且想要将数据加载到 OpenCL 缓冲区对象中,则使用 CL_MEM_USE_HOST_PTR 和分配在 4096 字节边界(与页面和缓存行边界对齐)的缓冲区,总大小为64 字节的倍数(缓存行大小)。

    从主机读取或写入数据到这些缓冲区时,使用clEnqueueMapBuffer(),对缓冲区进行操作,然后调用clEnqueueUnmapMemObject()。

    【讨论】:

      【解决方案2】:

      GPU 和 CPU 内存共享? GPU有多个核心,没有控制单元,但CPU通过控制单元控制GPU。专用 GPU 拥有自己的 DRAM=VRAM=GRAM,速度比集成 RAM 快。当我们说集成 GPU 时,意味着 GPU 与 CPU 放置在同一芯片上,并且 CPU 和 GPU 使用相同的 RAM 内存(共享内存)。

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 2016-06-22
        • 2017-08-28
        • 2012-06-24
        • 2011-05-22
        • 1970-01-01
        • 2018-07-07
        • 2020-04-06
        • 1970-01-01
        • 2012-10-23
        相关资源
        最近更新 更多