NVLink는 Nvidia가 개발한 유선 기반 직렬, 다중 레인, 근거리 통신 링크로, CPU와 GPU 간 및 GPU 간 데이터 및 제어 코드 전송을 위해 사용된다. PCI Express와 달리, 하나의 장치는 여러 개의 NVLink로 구성될 수 있으며, 장치들은 중앙 허브나 스위치 대신 메시 네트워킹을 사용하여 통신할 수 있다. 이 프로토콜은 2014년 3월에 처음 발표되었으며, 독점적인 고속 신호 상호 연결(NVHS)을 사용한다. NVLink는 고성능 컴퓨팅, 인공 지능, 머신 러닝 워크로드의 증가하는 대역폭 수요를 해결하기 위해 설계되었으며, 기존 버스 아키텍처에 비해 낮은 지연 시간과 높은 처리량을 제공한다.
아키텍처 및 버전
NVLink는 버전 1.0, 2.0, 3.0 이상에 대해 각각 차동 쌍당 20, 25, 50 Gbit/s의 데이터 속도를 갖는 점대점 연결을 지정한다. NVLink 1.0 및 2.0의 경우, 8개의 차동 쌍이 서브 링크를 형성하고, 두 개의 서브 링크(각 방향당 하나)가 링크를 형성한다. NVLink 3.0부터는 4개의 차동 쌍만이 서브 링크를 형성한다. NVLink 2.0 이상의 경우, 서브 링크의 총 데이터 속도는 25 GB/s이고, 링크의 총 데이터 속도는 50 GB/s이다. 각 V100 GPU는 최대 6개의 링크를 지원하여 최대 300 GB/s의 총 양방향 대역폭을 제공한다. 2020년 5월 14일에 발표된 NVLink 3.0은 쌍당 데이터 속도를 50 Gbit/s로 증가시키면서 링크당 쌍 수를 절반으로 줄였다. Ampere 기반 A100 GPU의 12개 링크로 총 대역폭은 600 GB/s에 도달했다. 2022년 3월에 발표된 Hopper 마이크로아키텍처는 18개의 NVLink 4.0 링크를 갖추어 900 GB/s를 지원한다. Nvidia의 Vera Rubin NVL72 플랫폼에 사용되는 NVLink 6은 GPU당 3.6 TB/s의 양방향 대역폭을 제공하며, 9개의 NVLink 6 스위치가 랙당 총 260 TB/s의 스케일업 대역폭을 제공한다.
확장성 및 스위칭
소수의 GPU의 경우, 단일 장치의 NVLink 레인은 전체 메시 연결에 충분하다. 더 많은 GPU 수를 수용하기 위해, NVLink는 2018년부터 패킷 교환 아키텍처를 사용해 왔으며, 중앙 스위치는 최대 32개의 2레인 포트를 지원할 수 있다. NVLink 4.0용 NVSwitch는 SHARP 가속기를 통해 통신 오버헤드를 줄이기 위해 간단한 계산(예: 합계, 브로드캐스트)을 수행할 수 있다. 이 스위치 기반 접근 방식은 딥 러닝 훈련 및 대규모 언어 모델 추론에 사용되는 것과 같은 대규모 GPU 클러스터를 구축할 수 있게 해주며, 여기서 효율적인 확장이 중요하다.
성능 특성
실제 성능은 128b/130b 라인 코딩, 링크 제어 문자, 트랜잭션 헤더, 버퍼링 기능, 호스트 측 DMA 사용과 같은 오버헤드의 영향을 받는다. 이러한 요인들은 일반적으로 데이터 속도를 이론적 전송 속도의 90-95%로 감소시킨다. 벤치마크에 따르면, IBM POWER8 CPU로 구동되는 시스템에서 P100 GPU를 향한 40 Gbit/s NVLink 연결의 경우 달성 가능한 전송 속도는 약 35.3 Gbit/s(호스트에서 장치로)이다. 아래 표는 버전 간 기본 지표를 비교한다:
| 버전 | 쌍당 데이터 속도 | 서브 링크당 쌍 수 | GPU당 링크 수 | 총 대역폭 |
|---|---|---|---|---|
| 1.0 | 20 Gbit/s | 8 | 4 (P100) | 160 GB/s |
| 2.0 | 25 Gbit/s | 8 | 6 (V100) | 300 GB/s |
| 3.0 | 50 Gbit/s | 4 | 12 (A100) | 600 GB/s |
| 4.0 | 50 Gbit/s | 4 | 18 (H100) | 900 GB/s |
| 6.0 | - | - | - | 3.6 TB/s |
플러그인 보드와의 사용
NVLink는 특정 고급 그래픽 카드에서도 사용할 수 있으며, 카드에 물리적 커넥터가 있어 NVLink 그룹으로 카드를 결합할 수 있다. 이러한 커넥터는 일반적으로 미세 그리드 엣지 커넥터가 있는 U자형이며, 너비는 필요한 슬롯 간격(일반적으로 3~5 슬롯)을 결정한다. 이 상호 연결은 구조적 설계로 인해 종종 SLI(확장 가능한 링크 인터페이스)라고 불리지만, 현대의 NVLink는 기술적으로 다르다. 보고된 장치로는 Quadro GP100(브리지 2개로 최대 160 GB/s), Quadro GV100(최대 200 GB/s), GeForce RTX 2080 및 2080 Ti(단일 브리지), GeForce RTX 3090(고유 브리지), Quadro RTX 5000/6000/8000(최대 100 GB/s)이 있다.
소프트웨어 및 프로그래밍
Tesla, Quadro 및 Grid 제품 라인의 경우, NVML-API(Nvidia 관리 라이브러리 API)는 Windows 및 Linux에서 NVLink 상호 연결을 제어하는 기능을 제공하며, 구성 요소 평가, 상태/오류 쿼리, 성능 모니터링을 포함한다. NCCL 라이브러리(Nvidia 집단 통신 라이브러리)는 개발자가 NVLink 위에 강력한 AI 및 계산 집약적 애플리케이션을 구현할 수 있게 해준다. Nvidia 제어판의 "3D 설정" 페이지와 CUDA 샘플 "simpleP2P"는 이러한 API를 사용한다. Linux에서는 명령줄 도구 nvidia-smi nvlink가 유사한 고급 정보 및 제어 기능을 제공한다.
역사
2016년 4월 5일, Nvidia는 NVLink가 Tesla P100과 같은 제품에 사용되는 Pascal 기반 GP100 GPU에 구현될 것이라고 발표했다. DGX-1 고성능 컴퓨터는 단일 랙에서 최대 8개의 P100 모듈을 허용했으며, NVLink 연결을 라우팅하기 위한 전용 캐리어 보드를 통해 최대 2개의 호스트 CPU에 연결되었다. 각 P100은 800개의 핀(PCIe 및 전원용 400개, NVLink용 400개)이 필요했다. 이후 세대(Volta, Ampere, Hopper 및 이후)는 링크 수와 대역폭을 계속 증가시켜 NVLink를 생성형 AI 및 고성능 컴퓨팅의 핵심 기술로 확고히 했다.