2016-10-26 7 views
0

У меня нет доступа к системе с несколькими gpu, чтобы проверить это, но в cuda.h я нашел две вещи, которые кажутся очень похожими. Первая функцияВ чем разница между cuDeviceCanAccessPeer (...) и cuDeviceGetP2PAttribute (..., CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED, ...)?

CUresult CUDAAPI cuDeviceCanAccessPeer(int *canAccessPeer, CUdevice dev, CUdevice peerDev); 

Описанная как

возврат в *canAccessPeer значении 1, если контексты на dev способны прямой доступ к памяти из контекстов на peerDev и 0 иным образом. Если возможен прямой доступ peerDev от dev, то доступ может быть включен в двух конкретных контекстах, вызвав ::cuCtxEnablePeerAccess().

И второй один

CUresult CUDAAPI cuDeviceGetP2PAttribute(int* value, CUdevice_P2PAttribute attrib, CUdevice srcDevice, CUdevice dstDevice); 

Описано как

Возвращения в *value the значение запрашиваемого атрибута attrib канала связи между srcDevice и dstDevice. Поддерживаемые атрибуты:

::CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK: Относительное значение, указывающее на эффективность связи между двумя устройствами.

::CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED P2 : 1` если P2P Access разрешен.

::CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED: 1 если поддерживаются Атомные операции по ссылке.

Название CU_DEVICE_ATTRUBUTE_ACCESS_SUPPORTED бы предположить, что призыв к cuDeviceCanAccessPeer так же, как с помощью cuDeviceGetP2PAttribute с attrib набором для ::CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED P2P, но описание «1 если P2P Доступ включить» меня смущает.

Действительно ли они одинаковы или второй должен проверить, активирована ли ссылка?

ответ

0

Я не верю, что они одинаковы.

  • cuDeviceCanAccessPeer возвращает ли доступ P2P является возможно между двумя устройствами или нет.
  • cuDeviceGetP2PAttribute возвращает ли P2P-доступ включен между двумя устройствами.

Без предварительного успешного вызова cuCtxEnablePeerAccess, cuDeviceGetP2PAttribute должен возвращать ложь при запросе атрибута CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED, даже если cuDeviceCanAccessPeer возвращает истину.

Обратите внимание, что я также не имею доступа к системе с поддержкой P2P, чтобы проверить это.

+0

Кажется, что так, но с другой стороны, имя атрибута 'CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED' меня немного смущает. – pansk

 Смежные вопросы

  • Нет связанных вопросов^_^