OpenCL:写入主存中的指针

OpenCL:写入主存中的指针,opencl,Opencl,使用OpenCL的DMA功能,是否可以写入传递到cl程序的主内存地址?我知道这样做可能会破坏程序,但这里的目的是运行GPU进程,然后覆盖用于运行它的CPU程序的地址空间,因此破坏是意料之中的 谢谢 您的目标是哪个版本的OpenCLAPI? 在OpenCL2.0及更高版本中,您可以使用共享虚拟内存(SVM)在支持它的平台中在主机和设备之间共享地址。 您可以在中获得有关它的更多信息 如果您使用的是以前的版本,或者您的硬件不支持它,则可以使用带有适当标志的固定内存来clCreateBuffer。特别是

使用OpenCL的DMA功能,是否可以写入传递到cl程序的主内存地址?我知道这样做可能会破坏程序,但这里的目的是运行GPU进程,然后覆盖用于运行它的CPU程序的地址空间,因此破坏是意料之中的


谢谢

您的目标是哪个版本的OpenCLAPI? 在OpenCL2.0及更高版本中,您可以使用共享虚拟内存(SVM)在支持它的平台中在主机和设备之间共享地址。 您可以在中获得有关它的更多信息

如果您使用的是以前的版本,或者您的硬件不支持它,则可以使用带有适当标志的固定内存来clCreateBuffer。特别是,CL_MEM_USE_HOST_PTR或CL_MEM_ALLOC_HOST_PTR,请参阅

请注意,当使用CL_MEM_USE_HOST_PTR时,有一些对齐限制。
通常,在OpenCL中,DMA的使用时间和方式取决于硬件平台,因此您应该参考供应商文档了解详细信息。

您的目标是哪个版本的OpenCL API? 在OpenCL2.0及更高版本中,您可以使用共享虚拟内存(SVM)在支持它的平台中在主机和设备之间共享地址。 您可以在中获得有关它的更多信息

如果您使用的是以前的版本,或者您的硬件不支持它,则可以使用带有适当标志的固定内存来clCreateBuffer。特别是,CL_MEM_USE_HOST_PTR或CL_MEM_ALLOC_HOST_PTR,请参阅

请注意,当使用CL_MEM_USE_HOST_PTR时,有一些对齐限制。 通常,在OpenCL中,何时以及如何使用DMA取决于硬件平台,因此您应该参考供应商文档了解详细信息