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 메모리를 일반 호스트 메모리처럼 조작할 수 있습니다.
두 가지 백엔드를 지원합니다:
- gdrdrv: GPU 메모리 매핑을 위한 전용 커널 모듈.
- 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 지연 시간 측정을 위한 테스트 제품군 포함.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트