Есть ли что-то противоположное cudaHostGetDevicePointer()?
Предположим, что мое устройство Kepler и выше, CUDA 6,5 или выше, а мой драйвер с 2015 года.
Можно ли сделать противоположность cudaHostGetDevicePointer()
? то есть, при условии адресации на стороне устройства проявления некоторой отображенной памяти, получить адрес хоста?
1 ответ
Если вы работаете на платформе с поддержкой унифицированной адресации, вы можете вызывать cudaPointerGetAttributes для любого указателя, который зарегистрирован или размещен в унифицированном адресном пространстве. Функция возвращает структуру
struct cudaPointerAttributes {
enum cudaMemoryType memoryType;
int device;
void *devicePointer;
void *hostPointer;
int isManaged;
}
который сообщит вам адреса устройства и хоста памяти, а также то, на каком устройстве он физически находится, или в каком контексте устройства он был первоначально зарегистрирован (для памяти хоста).
Если у вас нет доступа к унифицированной адресации, я не верю, что есть способ добиться этого.