1

假设我的设备是 Kepler 及更高版本,CUDA 为 6.5 或更高版本,而我的驱动程序最早是 2015 年的。

有可能做相反的事情cudaHostGetDevicePointer()吗?即,提供一些映射内存的设备端表现的地址,获取主机地址?

4

1 回答 1

1

如果您在支持统一寻址的平台上运行,您可以在统一地址空间中注册或分配的任何指针上调用cudaPointerGetAttributes 。该函数返回一个结构

  struct cudaPointerAttributes {
          enum cudaMemoryType memoryType;
          int device;
          void *devicePointer;
          void *hostPointer;
          int isManaged;
      }

这将告诉您内存的设备和主机地址,以及它物理驻留在哪个设备上,或者它最初注册在哪个设备上下文中(用于主机内存)。

如果您无法访问统一寻址,我不相信有办法实现这一点。

于 2016-03-14T06:53:54.557 回答