c++ - 有与 cudaHostGetDevicePointer() 相反的东西吗?

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

假设我的设备是 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/

相关文章:

iphone - 何时释放 NSDictionary 实例及其所有值?

c++ - 如何从 C++ 核心指南检查程序检查路径中排除文件夹?

c++ - 如何通过预处理文件来访问 O(1) 中文件中的一行?

c++ - 了解 shared_ptr

ios - 带有在方法内部创建的指针的ARC

cuda - 如何修改 xorg.conf 文件以强制 X 服务器在特定 GPU 上运行? (我使用多个 GPU)

c++ - 使用自定义内核或 CUBLAS 对 vector 张量积进行 CUDA 优化

c++ - CUDA 对 CPU 和 GPU 具有相同的功能

C++ 非 QT 接口(interface)和 QtNetwork

c++ - exchange 或 compare_and_exchange 是否读取修改顺序中的最后一个值?