2013-06-11 5 views
0

PCI 장치에서 CUDA 장치 메모리에 쓸 수있는 방법이 있습니까? 이 PCI 장치는 매우 빠른 속도로 데이터를 로깅합니다. 그래서 최대 성능을 달성, 나는 GPU 메모리에 직접 호스트 전송 처리를 위해 데이터를 복사하고 싶습니다.PCI 장치에서 CUDA GPU 메모리로 복사

RDMA에 대한 내용은 CUDA 5.0에서 읽었습니다. 어떻게 RDMA/GPUDirect를 사용하여 PCI에서 GPU 메모리로 데이터를 전송할 수 있습니까?

일부 샘플을 제공해 주시면 도와주세요. 내가 사용하고

OS는 윈도우 7 64 비트에 CentOS있는 64 비트 CUDA SDK 5.0과 GPU는 GPUDirect에 대한 RDMA가 직접 할 수 케플러 급의 GPU와 CUDA 5.0에 도입 된 기능입니다

+1

기본적으로 사용중인 모든 PCI 장치에 대해 사용자 고유의 장치 드라이버를 작성/수정합니다. GPUDirect를 사용하는 데 필요한 코드는 사용자 공간이 아닌 커널 공간에서 실행됩니다. – talonmies

+0

하지만 PCI 장치 드라이버의 소스 코드가 없다면 어떻게 할 수 있습니까? – Sijo

+1

수 없습니다. PCI-e 장치 *에는 특정 NVIDIA 커널 공간 API를 사용하는 드라이버가 있어야 고정 된 메모리를 GPU 드라이버에 등록하고 GPUDirect 데이터 경로를 활성화 할 수 있습니다. 장치 drvier가 닫힌 소스 인 경우 GPUdirect 지원 추가에 대해 공급 업체와상의해야합니다. – talonmies

답변

2

테슬라 K20입니다 PCI Express의 표준 기능을 사용하여 GPU와 피어 장치 간의 통신 경로.
장치가 동일한 업스트림 루트 컴플렉스를 공유해야합니다.
이 기능을 사용하려면 장치 드라이버를 간단히 변경해야합니다.

자세한 내용은 NVIDIA Documentation regarding RDMA for GPUDirect을 참조하십시오.

+0

기술적으로 RDMA는 그 문제에 관한 것이 아닙니다. RMDA는 * 원격 * DMA입니다. Infiniband와 같은 대기 시간이 짧은 네트워크 패브릭을 통해 호스트간에 제로 복사가 가능합니다. GPUDirect는 RDMA 가능 네트워크 어댑터가 PCI-e 버스를 통해 GPU 메모리로 직접 전송을 수행하는 메커니즘입니다. 문제는 실제로 후자의 메커니즘에 관한 것이지 이전의 메커니즘에 관한 것이 아닙니다. – talonmies