Есть ли что-то противоположное cudaHostGetDevicePointer()?

Предположим, что мое устройство Kepler и выше, CUDA 6,5 или выше, а мой драйвер с 2015 года.

Можно ли сделать противоположность cudaHostGetDevicePointer()? то есть, при условии адресации на стороне устройства проявления некоторой отображенной памяти, получить адрес хоста?

1 ответ

Решение

Если вы работаете на платформе с поддержкой унифицированной адресации, вы можете вызывать cudaPointerGetAttributes для любого указателя, который зарегистрирован или размещен в унифицированном адресном пространстве. Функция возвращает структуру

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

который сообщит вам адреса устройства и хоста памяти, а также то, на каком устройстве он физически находится, или в каком контексте устройства он был первоначально зарегистрирован (для памяти хоста).

Если у вас нет доступа к унифицированной адресации, я не верю, что есть способ добиться этого.

Другие вопросы по тегам