2013-07-17 2 views
3

피어 - 투 - 피어 메모리 전송에 대해 듣고 그것에 대해 읽었지만 표준 PCI-E 버스 전송과 비교하여 얼마나 빨랐는지 정말 이해할 수 없었습니다.피어 - 투 - 피어 CUDA 전송

나는 하나 이상의 GPU를 사용하는 CUDA 어플리케이션을 가지고 있으며 P2P 전송에 관심이있을 수 있습니다. 제 질문은 PCI-E와 얼마나 빨리 비교할 수 있습니까? 두 장치가 서로 통신하도록하기 위해 자주 사용할 수 있습니까?

+1

'p2p'는 CUDA 디바이스가 이제 PCI-E를 통해 서로간에 데이터를 전송할 수 있다고 말하는 시장입니다. 속도는 PCI-E 버스에서 기대하는 속도입니다. 좀 더 흥미로운 측면에서 "피어 액세스 (peer access)"라는 것도 있습니다.이 기능을 사용하면 여러 장치에서 데이터를 읽고 쓸 수있는 커널을 시작할 수 있습니다. –

+0

이것은 흥미 롭습니다.이 "피어 액세스"를 설명하는 것을 알려주시겠습니까? 또한 :이 답변을 만들어, 그것은 내게 충분하고 나는 그것을 받아 들일 것입니다! –

+0

링크에 대한 답변이 추가되었습니다. –

답변

6

CUDA "피어"는 현재 GPU의 데이터에 액세스 할 수있는 다른 GPU를 나타냅니다. Compute 2.0 이상의 모든 GPU는이 기능을 사용할 수 있습니다.

피어 투 피어 메모리 복사본에는 cudaMemcpy을 사용하여 아래와 같이 PCI-E를 통해 메모리를 복사해야합니다. dstsrc 다른 장치가 될 수 있음은

cudaMemcpy(dst, src, bytes, cudaMemcpyDeviceToDevice); 

참고.

cudaDeviceEnablePeerAccess을 사용하면 사용자가 여러 장치의 데이터를 사용하는 커널을 시작할 수 있습니다. 메모리 액세스는 여전히 PCI-E를 통해 수행되며 동일한 병목 현상을 갖습니다.

이 좋은 예는 쿠다 샘플의 simplep2p입니다.

+0

감사합니다! 이것은 내가 찾고 있었던 바로 그 것이다! –