AI & GPU

Pinned Memory

Tech Crunchy 2025. 5. 6. 16:32
728x90

개요

Pinned Memory(또는 Page-locked Memory)는 운영체제가 해당 메모리 영역을 물리적 RAM에 고정시켜, 스와핑(페이지 아웃)하지 못하도록 하는 메모리입니다. 즉, 항상 실제 메인 메모리에 상주하며, GPU와의 데이터 전송에서 매우 중요한 역할을 합니다.

 

내용

모델 학습 시 GPU를 사용하려면 GPU 메모리(VRAM)에 데이터를 로드해야 합니다. 이 때 CPU와 RAM에서 빠르게 데이터를 옮기기 위해 사용하는 것이 Pinned Memory입니다.

 

일반적으로 Pageable Memory(스와핑 가능 메모리)에서 Pinned Memory로 데이터를 옮긴 후 VRAM으로 데이터가 이동합니다. PyTorch에서 pin_memory 옵션 값을 설정하면 Pageable Memory를 거치지 않고 바로 Pinned Memory에서 VRAM으로 데이터를 이동시킬 수 있습니다.

 

 

Pinned Memory는 딥러닝에서 CPU와 GPU 간의 고속 데이터 전송을 위한 필수적인 메커니즘입니다. 항상 물리적 메모리에 상주해 있어 GPU가 직접 접근할 수 있으며, 대용량 데이터 처리와 실시간 응용에 큰 이점을 제공합니다.

  • 물리적 RAM에 존재: OS가 메모리를 디스크로 내보내지 못하므로, 언제든 빠르게 접근 가능
  • GPU와의 고속 데이터 전송: 데이터를 CPU 메모리에서 GPU 메모리로 전송할 때, 일반적인 Pageable Memory는 직접 접근이 불가능함. 임시로 Pinned Memory에 복사한 뒤 전송해야 하므로, Pinned Memory를 직접 사용하면 전송 속도가 크게 향상됩니다.
  • Direct Memory Access (DMA) 지원: GPU는 DMA를 통해 Pinned Memory에 직접 접근할 수 있어, CPU 개입 없이 빠른 데이터 이동이 가능함
  • PyTorch 등 프레임워크 지원: PyTorch의 pin_memory 옵션은 데이터로더가 데이터를 미리 Pinned Memory에 올려 GPU로의 전송을 가속화함
728x90

'AI & GPU' 카테고리의 다른 글

드랍아웃  (1) 2025.05.06
데이터 익명화  (0) 2025.05.04
RFE  (0) 2025.05.04
SMOTE  (0) 2025.05.04
슬라이딩 윈도우 메커니즘  (1) 2025.05.04