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