이 테스트하려면 다중 gpu 시스템에 액세스 할 수 있지만 cuda.h 꽤 비슷한 두 가지를 발견했습니다. 첫번째 *canAccessPeer
에cuDeviceCanAccessPeer (...)와 cuDeviceGetP2PAttribute (..., CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED, ...)의 차이점은 무엇입니까?
반환으로 설명한 기능
CUresult CUDAAPI cuDeviceCanAccessPeer(int *canAccessPeer, CUdevice dev, CUdevice peerDev);
이다
dev
문맥에 직접 그렇지peerDev
및0
컨텍스트에 메모리를 액세스 할 수있는 경우1
값.dev
에서peerDev
의 직접 액세스가 가능하면::cuCtxEnablePeerAccess()
을 호출하여 두 가지 특정 상황에서 액세스가 가능할 수 있습니다.
그리고 두 번째는
CUresult CUDAAPI cuDeviceGetP2PAttribute(int* value, CUdevice_P2PAttribute attrib, CUdevice srcDevice, CUdevice dstDevice);
가
srcDevice
및
dstDevice
간의 링크의 요구 특성의
attrib
*value the
값
반환으로 설명한다. 지원되는 속성은 다음과 같습니다.
::CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK
: 두 장치 간의 링크 성능을 나타내는 상대 값입니다.
::CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED
P2:
'P2P 액세스가 활성화 된 경우.
::CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED: 1
링크를 통한 원자 적 조작이 지원되는 경우.
이름 CU_DEVICE_ATTRUBUTE_ACCESS_SUPPORTED
는 cuDeviceCanAccessPeer
에 대한 호출이 ::CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED P2P
에 attrib
세트 cuDeviceGetP2PAttribute
를 사용하는 것과 동일하다는 것을 제안하지만, "P2P 액세스가 가능 경우 1
"설명 나를 혼란.
링크가 실제로 활성화되었는지 또는 두 번째 링크가 활성화되었는지 테스트해야합니까?
다른 것처럼 보이지만 속성 이름'CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED'는 조금 혼란 스럽습니다. – pansk