【问题标题】:Is there an opposite to cudaHostGetDevicePointer()?与 cudaHostGetDevicePointer() 有相反的含义吗?
【发布时间】:2016-06-28 21:58:26
【问题描述】:

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

是否可以与cudaHostGetDevicePointer()相反?即,提供一些映射内存的设备端表现的地址,获取主机地址?

【问题讨论】:

    标签: c++ memory-management cuda mapped-memory


    【解决方案1】:

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

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

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

    如果您无法访问统一寻址,我认为没有办法实现这一点。

    【讨论】:

    • 是的,我认为这取决于统一寻址,这就是为什么我提到我的“装备”是最新的。谢谢。
    猜你喜欢
    • 2016-07-22
    • 2021-12-10
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2012-07-13
    相关资源
    最近更新 更多