NVIDIA/gdrcopy

A fast GPU memory copy library based on NVIDIA GPUDirect RDMA technology

해결하는 문제

GDRCopy는 CPU와 GPU 간의 데이터 이동 시 발생하는 오버헤드를 줄이기 위해 설계된 저지연 GPU 메모리 복사 라이브러리입니다. CPU가 직접 복사 과정을 제어하도록 함으로써, 표준 복사 작업(예: cudaMemcpy)에서 발생하는 6-7 마이크로초의 높은 지연 시간을 해결합니다.

작동 원리

이 라이브러리는 NVIDIA GPUDirect RDMA 기술을 활용하여 GPU 메모리의 사용자 공간 매핑을 생성합니다. 이를 통해 CPU는 GPU 메모리를 일반 호스트 메모리처럼 조작할 수 있습니다.

두 가지 백엔드를 지원합니다:

  1. gdrdrv: GPU 메모리 매핑을 위한 전용 커널 모듈.
  2. DMA-BUF mmap: 커널 모듈이 설치되지 않은 환경을 위한 백엔드로, CUDA 드라이버를 사용하여 GPU 메모리를 Linux dma-buf로 내보내고 mmap()을 통해 매핑합니다.

성능 특성상 쓰기 결합(write-combining)으로 인해 호스트에서 장치(H-D)로의 전송은 빠르지만, GPU BAR를 프리페치할 수 없기 때문에 장치에서 호스트(D-H)로의 전송은 상대적으로 느립니다.

대상 사용자

NVIDIA Data Center 또는 RTX GPU를 사용하며, 성능이 중요한 애플리케이션에서 CPU와 GPU 간의 극도로 낮은 지연 시간의 데이터 전송이 필요한 개발자.

주요 특징

  • 낮은 오버헤드: CPU 주도 복사를 통해 표준 CUDA 메모리 복사 대비 지연 시간을 크게 줄임.
  • 유연한 매핑: GPU 메모리의 사용자 공간 매핑을 생성하기 위한 인프라 제공.
  • 다중 백엔드: 커널 모듈 방식과 DMA-BUF mmap 폴백 방식을 모두 지원.
  • 벤치마킹 도구: 상태 점검, 대역폭 계산, 왕복 ping-pong 지연 시간 측정을 위한 테스트 제품군 포함.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트