NCCL

From HPCWIKI
Revision as of 13:26, 17 July 2026 by Clara (talk | contribs) (Phase 0.3: Create NCCL)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

NCCL

Template:Status

Template:TOC

Overview

NCCL(NVIDIA Collective Communications Library)는 GPU 간 통신을 최적화하는 라이브러리. AllReduce, AllGather, Broadcast 등 컬렉티브 연산 제공. Multi-GPU/Distributed 학습의 핵심.

Summary

  • * 무엇인가? NVIDIA 컬렉티브 통신 라이브러리. GPU 간 최적화
  • * 왜 필요한가? Multi-GPU 학습 시 GPU 간 데이터 동기화 필수
  • * 언제 사용하는가? 분산 학습, Multi-GPU 추론, HPC 워크로드

---

Purpose

이 문서가 존재하는 이유

  • Goal: NCCL의 개념, 사용법, 설정 가이드 제공
  • Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
  • Non-goals: 고급 커스터마이징, 내부 소스 코드 분석

---

Key Concepts

Template:KeyConcepts

---

Architecture

NCCL은 GPU 간 통신을 위한 컬렉티브 연산 라이브러리. NVLink/InfiniBand/PCIe 등 다양한 백엔드 지원. Tree/Ring 알고리즘으로 대역폭 최적화. PyTorch/TensorFlow/JAX와 통합.

---

Workflow

1. 1. NCCL 설치 (PyTorch에 기본 포함)

2. 2. NCCL_DEBUG=INFO로 디버깅

3. 3. torch.distributed로 Multi-GPU 설정

4. 4. DistributedDataParallel로 모델 병렬화

5. 5. NCCL 테스트로 성능 확인

6. 6. 환경 변수로 최적화 (NCCL_ALGO, NCCL_PROTO)

---

Configuration

{config_code}

---

Best Practices

  • NCCL_DEBUG=INFO로 통신 경로 확인
  • NVLink 사용 시 NCCL_ALGO=Tree 권장
  • InfiniBand 사용 시 NCCL_PROTO=LL128 권장
  • NCCL_IB_DISABLE=0으로 IB 사용 강제
  • torch.distributed.init_process_group()로 NCCL 초기화

---

Limitations

  • NCCL은 NVIDIA GPU 전용 (AMD ROCm 사용)
  • 소규모 배치에서는 오버헤드 발생
  • 네트워크 지연에 민감

---

References

---

Related Pages