AI & GPU

NCCL

Tech Crunchy 2025. 4. 2. 18:23
728x90

개요

NCCL(NVIDIA Collective Communication Library)은 NVIDIA에서 제공하는 multi-GPU 및 multi-node 집합 통신 라이브러리입니다. GPU 간 PCIe, NVLink, InfiniBand 등의 고속 인터커넥트로 연결되어 있는 상황에서 고대역폭과 낮은 Latency를 제공하기 위한 최적화된 집합 통신 함수를 제공합니다.

 

NCCL 구현 방식

NCCL은 Ring 기반 집합 통신 알고리즘을 사용하여 최적화를 수행합니다. 다수의 GPU가 링 형태로 연결되어 인접한 GPU 간 데이터 교환이 이루어지며, 이를 통해 효율적인 데이터 전송을 수행합니다. 또한, NCCL은 CUDA 스트림과 통합되어 커널 실행과 데이터 전송을 병렬로 처리함으로써 동기화를 단순화하고 성능을 향상합니다.

 

NCCL 주요 특징

  • 최적화된 성능: NVLink, PCIe, InfiniBand 등 고속 인터커넥트를 활용하여 높은 대역폭과 낮은 지연 시간을 제공. 시스템의 네트워크 토폴로지에 따라 최적 경로와 알고리즘을 자동으로 탐지하여 성능을 극대화
  • 사용 편의성: 간단한 C API를 제공하며, MPI(Message Passing Interface)와 유사한 구조로 설계되어 기존 MPI 사용자에게 친숙함. 단일 스레드, 다중 스레드, 다중 프로세스 모델 등 다양한 병렬화 방식과 호환
  • 다양한 지원: 단일 노드 내 다중 GPU 통신뿐만 아니라, 여러 노드 간 통신도 지원. 딥러닝 프레임워크와 통합되어 빠른 분산 학습을 제공

 

NCCL 집합 통신

NCCL의 집합 통신으로 시스템 네트워크 토폴로지에 따라 최적 경로와 알고리즘을 자동으로 탐지하여 성능을 극대화합니다. 집합 통신의 유형은 Reduce, AllReduce, ReduceScatter, AllGather, Broadcast가 있습니다.

  • Reduce: 모든 GPU의 데이터를 합산하여 특정 GPU로 전송
  • AllReduce: 모든 GPU의 데이터를 합산하고 결과를 모든 GPU에 배포
  • ReduceScatter: 모든 GPU의 데이터를 합산하고 결과를 각 GPU의 프로세스에 분배
  • AllGather: 각 GPU의 데이터를 모아 모든 GPU에 배포
  • Broadcast: 한 GPU의 데이터를 모든 GPU에 전송

NCCL 집합통신

 

특이사항

NCCL은 [니켈] [Nickel]이라 발음합니다.

728x90