假设我的设备是 Kepler 及以上,CUDA 是 6.5 或以上,我的驱动程序最早是 2015 年的。
是否可以执行与 cudaHostGetDevicePointer()
相反的操作?即,提供一些映射内存的设备端表现的地址,获取主机地址?
最佳答案
如果您在支持统一寻址的平台上运行,您可以调用cudaPointerGetAttributes在统一地址空间中注册或分配的任何指针上。该函数返回一个结构
struct cudaPointerAttributes {
enum cudaMemoryType memoryType;
int device;
void *devicePointer;
void *hostPointer;
int isManaged;
}
它将告诉您内存的设备地址和主机地址,以及它实际驻留在哪个设备上,或者它最初注册在哪个设备上下文中(对于主机内存)。
如果您无法访问统一寻址,我认为没有办法实现这一目标。
关于c++ - 有与 cudaHostGetDevicePointer() 相反的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977784/