如果(离散)GPU拥有自己的视频RAM,则必须将我的数据从RAM复制到VRAM才能使用它们。但是,如果GPU与CPU(例如AMD Ryzen)集成在一起并共享内存,我是否仍需要进行复制,或者它们可以交替访问同一内存块吗?
答案 0 :(得分:2)
GPU和CPU内存共享? GPU具有多个没有控制单元的内核,但是CPU通过控制单元控制GPU。专用GPU具有比集成RAM更快的DRAM = VRAM = GRAM。当我们说集成GPU时,是指GPU与CPU放在同一芯片上,而CPU和GPU使用相同的RAM内存(共享内存)。
答案 1 :(得分: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 :(得分:0)