如果(离散)GPU 有自己的视频 RAM,我必须将数据从 RAM 复制到 VRAM 才能使用它们。但是如果 GPU 与 CPU 集成(例如 AMD Ryzen)并共享内存,我是否仍然需要制作副本,或者它们可以交替访问同一个内存块?
问问题
3304 次
3 回答
3
在集成显卡的情况下可以避免复制,但此功能是特定于平台的,并且对于不同的供应商可能会有不同的工作方式。
如何通过最小化英特尔® 处理器图形上的缓冲区副本来提高性能文章描述了如何为英特尔硬件实现这一目标:
要创建零复制缓冲区,请执行以下操作之一:
使用 CL_MEM_ALLOC_HOST_PTR 并让运行时处理为您创建零副本分配缓冲区
如果您已经拥有数据并希望将数据加载到 OpenCL 缓冲区对象中,则使用 CL_MEM_USE_HOST_PTR 并在 4096 字节边界(与页面和缓存行边界对齐)处分配缓冲区,总大小为 64 的倍数字节(缓存行大小)。
当从主机读取或写入数据到这些缓冲区时,使用 clEnqueueMapBuffer(),对缓冲区进行操作,然后调用 clEnqueueUnmapMemObject()。
于 2019-03-20T17:52:41.827 回答
2
GPU和CPU内存共享?GPU有多个核心,没有控制单元,但CPU通过控制单元控制GPU。专用 GPU 拥有自己的 DRAM=VRAM=GRAM,速度比集成 RAM 快。当我们说集成 GPU 时,意味着 GPU 与 CPU 放置在同一芯片上,并且 CPU 和 GPU 使用相同的 RAM 内存(共享内存)。
于 2019-11-03T05:01:20.750 回答
0
于 2020-03-19T17:51:55.990 回答