OpenCL,GPU内核可以直接访问主机内存

5
有没有一种方法可以在主机上分配内存,使其直接从GPU访问,而无需复制?
就像CUDA中的cudaHostGetDevicePointer一样。
1个回答

8

是的,使用包含以下标志之一的flags调用clCreateBuffer:

  • CL_MEM_USE_HOST_PTR
  • CL_MEM_ALLOC_HOST_PTR

这样可以实现你想要的功能。欲了解更多信息,请访问clCreateBuffer的手册页面。


抱歉,我没有说明清楚-我已经阅读了关于这些选项的信息,但是CL_MEM_USE_HOST_PTR可以被缓存在设备内存中-这对我的任务不允许。CL_MEM_ALLOC_HOST_PTR -“从主机可访问内存分配内存…”-这个内存是否可以从设备访问?据我所知,cudaHostGetDevicePointer使用原始DMA通过总线进行操作-我想找到类似的东西。 - ShPavel
2
没有什么是完全相似的,OpenCL比CUDA更加通用。所有的CL缓冲区都可以从设备端访问,包括使用CL_MEM_ALLOC_HOST_PTR分配的缓冲区。 - Dr. Snoopy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接