CPU和GPU内存共享

问题描述 投票:0回答:1

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

gpu opencl shared-memory gpgpu video-memory
1个回答
1
投票

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

How to Increase Performance by Minimizing Buffer Copies on Intel® Processor Graphics文章介绍了如何为英特尔硬件实现这一目标:

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

使用CL_MEM_ALLOC_HOST_PTR并让运行时句柄为您创建零拷贝分配缓冲区

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

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

© www.soinside.com 2019 - 2024. All rights reserved.