NVLink는 Nvidia가 고성능 컴퓨팅 시스템에서 프로세서를 연결하기 위해 개발한 전선 기반 직렬, 다중 레인, 근거리 통신 링크이다. PCI Express와 달리, 하나의 장치는 여러 개의 NVLink로 구성될 수 있으며, 장치들은 중앙 허브나 스위치 대신 메시 네트워킹을 사용하여 통신할 수 있다. 이 프로토콜은 2014년 3월에 처음 발표되었으며, 독점적인 고속 신호 상호 연결(NVHS)을 사용한다. 주로 CPU와 GPU 간, 그리고 GPU와 GPU 간에 데이터와 제어 코드를 전송하는 데 사용되며, Artificial intelligence 및 Machine learning과 같은 계산 집약적 워크로드를 위한 고대역폭, 저지연 통신을 가능하게 한다.
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은 차동 쌍당 데이터 속도를 25 Gbit/s에서 50 Gbit/s로 증가시키면서 링크당 쌍 수를 8개에서 4개로 줄였다. Ampere 기반 A100 GPU의 경우 12개의 링크로 총 대역폭이 600 GB/s에 이른다. 2022년 3월에 발표된 Hopper GPU 마이크로아키텍처는 18개의 NVLink 4.0 링크를 갖추어 900 GB/s의 총 대역폭을 제공한다. Nvidia의 Vera Rubin NVL72 플랫폼에 사용되는 NVLink 6은 GPU당 3.6 TB/s의 양방향 대역폭을 제공하며, NVL72 랙은 9개의 NVLink 6 스위치를 사용하여 총 260 TB/s의 스케일업 대역폭을 제공한다.
토폴로지 및 스위칭
소수의 GPU의 경우, 단일 장치의 NVLink 레인은 완전 연결 메시 연결에 충분하다. 더 높은 GPU 수를 수용하기 위해, NVLink는 2018년부터 패킷 교환 아키텍처를 사용하며, 중앙 스위치는 최대 32개의 2레인 포트를 제공할 수 있다. NVLink 4.0용 NVSwitch는 SHARP 가속기 덕분에 통신 필요성을 줄이기 위해 자체적으로 간단한 계산(예: 합계, 브로드캐스트)을 수행할 수 있다. 이를 통해 GPU 간 직접 연결을 넘어 확장할 수 있으며, DGX 시리즈 및 NVL72 랙과 같은 더 큰 시스템을 가능하게 한다.
성능 특성
실제 성능은 128b/130b 라인 코드, 링크 제어 문자, 트랜잭션 헤더, 버퍼링 기능, 컴퓨터 측의 DMA 사용과 같은 다양한 데이터 전송 오버헤드 비용을 적용하여 결정된다. 이러한 물리적 제한은 일반적으로 데이터 속도를 전송 속도의 90~95%로 줄인다. NVLink 벤치마크는 IBM POWER8 CPU로 구동되는 시스템에서 P100 GPU를 향한 40 Gbit/s(2 서브 레인 업링크) NVLink 연결에 대해 약 35.3 Gbit/s(호스트에서 장치로)의 달성 가능한 전송 속도를 보여준다.
플러그인 보드와의 사용
다양한 버전의 플러그인 보드의 경우, 소수의 고급 게임 및 전문 그래픽 GPU 보드는 NVLink 그룹에 연결하기 위한 추가 커넥터를 노출한다. 약간씩 다른, 비교적 컴팩트한 PCB 기반 상호 연결 플러그도 유사한 수로 존재한다. 일반적으로 물리적 및 논리적 설계로 인해 동일한 유형의 보드만 서로 결합된다. 일부 설정에서는 전체 데이터 속도를 달성하기 위해 두 개의 동일한 플러그를 적용해야 한다. 일반적인 플러그는 U자형이며, 각 끝 스트로크에 미세 그리드 에지 커넥터가 관찰자로부터 멀리 향하고 있다. 플러그의 너비는 플러그인 카드가 앉아야 하는 간격을 결정하며, 보드 유형에 따라 알려진 플러그 너비는 3~5 슬롯이다. 이 상호 연결은 구조적 설계로 인해 2004년부터 확장 가능한 링크 인터페이스(SLI)로 자주 불리지만, 현대의 NVLink 기반 설계는 기술적으로 다르다. 보고된 장치에는 Quadro GP100(최대 2개 브리지, 160 GB/s), Quadro GV100(최대 2개 브리지, 200 GB/s), 단일 브리지가 있는 GeForce RTX 2080 및 2080 Ti, 고유 브리지가 있는 GeForce RTX 3090, 그리고 최대 100 GB/s를 달성하는 단일 브리지가 있는 Quadro RTX 5000, 6000, 8000이 포함된다.
서비스 소프트웨어 및 프로그래밍
Tesla, Quadro 및 Grid 제품 라인의 경우, NVML-API(Nvidia Management Library API)는 Windows 및 Linux에서 NVLink의 구성 요소 평가, 상태/오류 쿼리, 성능 모니터링과 같은 측면을 프로그래밍 방식으로 제어하는 기능을 제공한다. NCCL 라이브러리(Nvidia Collective Communications Library)는 개발자가 NVLink 위에 강력한 Deep learning 및 계산 집약적 애플리케이션을 구현할 수 있게 한다. Nvidia 제어판의 "3D 설정" 페이지와 CUDA 샘플 애플리케이션 "simpleP2P"는 이러한 API를 사용한다. Linux에서는 하위 명령 "nvidia-smi nvlink"가 있는 명령줄 애플리케이션이 고급 정보 및 제어를 제공한다.
역사
2016년 4월 5일, Nvidia는 NVLink가 Nvidia Tesla P100 제품에 사용되는 Pascal 마이크로아키텍처 기반 GP100 GPU에 구현될 것이라고 발표했다. DGX-1 고성능 컴퓨터의 도입으로, 단일 랙 시스템에서 최대 8개의 P100 모듈을 최대 2개의 호스트 CPU에 연결할 수 있게 되었다. 캐리어 보드는 NVLink 연결을 라우팅하기 위한 전용 보드를 허용하며, 각 P100은 800개의 핀(PCIe 및 전원용 400개, NVLink용 400개)을 필요로 한다. 그 이후로 NVLink는 여러 세대를 거쳐 발전했으며, 각 반복은 대역폭과 링크 수를 증가시켰고, Nvidia의 Generative AI 및 Large language model 훈련 인프라에서 핵심 구성 요소로 남아 있다.