NVLINK란? 간단한 정리

NVLINK에 대한 정보를 찾던중 ULTRA-PERFORMANCE PASCAL GPU AND NVLINK INTERCONNECT 을  정리

전반적인 특징

Pascal Architecture에서는 Maxwell Architecture과 비교해서 다음과 같은 변화가 생겼다. (Tesla시리즈의 비교기때문에 모든 제품에 적용하기에는 무리가 있다.)

특징들Tesla M40Tesla P100
architectureGM200/MaxwellGP100/Pascal
Streaming multiprocessors2456
FP16(반정밀도) flops/clock/SM-(FP16연산유닛이 없다)256
FP32(단정밀도) flops/clock/SM256128
FP64(배정밀도) flops/clock/SM864
GPU base clock948 MHz1,328 MHz
GPU boost clock1,114 MHz1,480 MHz
Peak FP16 Tflops21.2
Peak FP32 Tflops6.810.6
Peak FP64 Tflops0.25.3
Memory interface384-bit GDDR54,096-bit HBM2
Memory sizeUp to 24 Gbytes16 Gbytes
L2 cache size3,072 Kbytes4,096 Kbytes
Register file size/SM256 Kbytes256 Kbytes
Register file size/GPU6,144 Kbytes14,336 Kbytes
TDP (board power)250 W300 W
Transistors8 billion15.3 billion
GPU die size601 $mm^2$610  $mm^2$
Manufacturing process28 nm16-nm FinFET

위 표를 보면 다음과 같은 큰 특징이 있습니다.

  • FP16 연산유닛 추가
  • Memory interface를 HBM memory로 변화 (넓은 대역폭)
  • L2 cache size 및 Register file size 크기 증가
  • Transistors 개수의 증가 (대략 2배)
  • 공정미세화 (28nm => 16 nm)
  • NVLINK 적용

FP32, FP16, INT8, Mixed-Precision

딥러닝에서는 FP32(단정밀도)을  FP16(반정밀도) 로 바꿀시에 발생하는 오차가 성능에 미미한 영향을 미치기에 반정밀도 연산으로 점점 넘어가고 있다.  데이터 크기 및 연산속도면에서 큰 이점을 보이며 대략 2배의 flops 이점을 가진다.

Storing FP16 (half precision) data compared to higher precision FP32 or FP64 reduces memory usage of the neural network, allowing training and deployment of larger networks, and FP16 data transfers take less time than FP32 or FP64 transfers. Moreover, for many networks deep learning inference can be performed using 8-bit integer (INT8) computations without significant impact on accuracy.” [source]

 

NVLINK

NVLINK는  아주 높은 대역폭을 가진 GPU – GPU , GPU – CPU 간의 전송 기술입니다. NVLINK는 지역 그래픽 메모리에 직접적인 접근 및 읽기 쓰기를 가능하게 합니다. 또한 NVLINK는 양방향 인터페이스로 1개 gpu당 4개의 레인? 가지며 1개당 20Gbyte의 대역폭 양방향 통신시 40Gbyte의 대역폭을 가집니다. 

Links

Nvlink는 Brick라고 부르는 채널을 가집니다. 하나의 NVLINK 는 양방향 통신이 가능한 8쌍의 수신 통신 wire를 가지며 즉 총 32개의 wire들을 가집니다. 

https://en.wikichip.org/wiki/nvidia/nvlink


시스템 구성

아래와 같이 4개의 NVLINK를 사용하여 2개의 GPU의 NVLINK 레인을 모두 사용하여 통신시 총 160GBytes의 대역폭을 확보 PCIE Gen3 X16 의 15.75 GB/s에 비하여 10배에 다르는 성능향상을 보입니다.

아래는 Hybrid Cubed Mesh 구조입니다. 

CPU는 NVLINK로 직접적으로 연결되어있지 않습니다. 각각의 GPU는 PCIE 를 통하여 CPU와 연결되며 2개의 GPU가 PCIE switch를 공유합니다. 또한 CPU는 SMP(symmetric multiprocessor)를 통하여 연결됩니다.

NVLINK는 gpu-cpu간에도 사용됩니다.(IBM power만 적용되는것으로 보입니다.)

각 연결당 20GBps  시스템 메모리로부터의 읽기 쓰기 대역폭을 확보합니다.

아래와 같이 CPU-gpu간에 4개의 연결 구성도 가능하며 최대 80 GBps 까지의 시스템 메모리 읽기 쓰기 대역폭을 가질 수 있습니다.

Ultra-Performance Pascal GPU and NVLink Interconnect

NVLINK2

NVLINK2에서 하나의 NVLINK의 대역폭이 20GB/s에서 25GB/s로 증가하였다. 

아래는 DGX-2 의 구성인데 NVLINK switch가 추가 되었다. 

총 16개의 GPU 의 NVLINK를 NVswitch이용하여 mesh 구조로 연결 하였다. 단순하게 보면 모든 GPU 와의 통신 채널을 만든 것 같다. 때문에 NVSWITCH가 8개의 레인을 가진 것으로 보인다. 

여담

2080TI는 nvlink 를 지원한다.

pytorch 에서 nvlink옵션을 사용하려면 컴파일 해서 사용해야 하면 nvidia-smi 에서 nvlink 시 뜬다.

온도가 체감상 10도 가량 높아지는 것 같다.

참조

왜 이런 기술이 필요한지와 GPU,CPU의 연결이 필요한지에 대한 설명이 좋다.

출처

https://ieeexplore.ieee.org/document/7924274/
https://blog.inten.to/hardware-for-deep-learning-part-3-gpu-8906c1644664

댓글을 남겨주세요~