假设我的设备是 Kepler 及更高版本,CUDA 为 6.5 或更高版本,而我的驱动程序最早是 2015 年的。
有可能做相反的事情cudaHostGetDevicePointer()
吗?即,提供一些映射内存的设备端表现的地址,获取主机地址?
假设我的设备是 Kepler 及更高版本,CUDA 为 6.5 或更高版本,而我的驱动程序最早是 2015 年的。
有可能做相反的事情cudaHostGetDevicePointer()
吗?即,提供一些映射内存的设备端表现的地址,获取主机地址?
如果您在支持统一寻址的平台上运行,您可以在统一地址空间中注册或分配的任何指针上调用cudaPointerGetAttributes 。该函数返回一个结构
struct cudaPointerAttributes {
enum cudaMemoryType memoryType;
int device;
void *devicePointer;
void *hostPointer;
int isManaged;
}
这将告诉您内存的设备和主机地址,以及它物理驻留在哪个设备上,或者它最初注册在哪个设备上下文中(用于主机内存)。
如果您无法访问统一寻址,我不相信有办法实现这一点。