2018년 1월 29일 월요일

IBM AC922의 2-socket 간의 대역폭은 얼마인가 ?

먼저, 이건 IBM의 공식 발표 수치가 아니라 현재까지 발표된 기술 자료들에 근거한 산술 계산임을 밝힙니다. 

IBM AC922은 POWER9 processor와 NVIDIA V100 GPU를 PCIe 대신 NVLink 2.0으로 연결했다는, 업계 유일무이한 아키텍처 외에도 자랑할 만한 점이 있습니다.  즉, 6개의 NVLink를 3개씩묶어, NVLink의 50GB/s (25+25)가 아닌 150GB/s의 대역폭으로 GPU와 GPU, 그리고 CPU와 GPU를 연결한다는 점입니다.

같은 NVLink V100을 사용하는 x86 processor 기반의 다른 서버들에서는 CPU와 GPU는 고작 32GB/s의 PCIe로 연결하고, 또 GPU와 GPU 간도 NVLink 하나로 연결되기 때문에 고작 50GB/s로 연결되는 점과 비교되는 부분입니다. 

하지만 AC922의 각 CPU 소켓에 연결된 2개의 GPU cluster간의 연결은 POWER 프로세서의 SMP 버스를 연결해야 한다는 점은 여전합니다.   기존 POWER8 + P100 구조인 Minsky 서버에서는 이 SMP X bus의 대역폭이 38.4 GB/s 였기 때문에, 40 GB/s인 NVLink 1.0에 비해 손색이 별로 없었습니다.   그런데, AC922에서는 이 SMP X bus의 대역폭이 얼마일까요 ?  아직 IBM에서 AC922의 아키텍처에 대한 상세 redbook이 나오지 않아 정식으로 발표된 자료가 없습니다.


(이 그림에서 왼쪽은 P100을 장착한 DGX-1의 아키텍처입니다.  이제 4개의 NVLink 1.0 port를 장착한 P100 대신 6개의 NVLink 2.0을 장착한 V100을 탑재했으니, 아마 GPU 간을 엮는 NVLink topology가 조금 바뀌었을 것 같은데, 그림을 못 찾겠네요.  대신 기존의 링크 당 40GB/s 대신 50GB/s로 올라간 것은 확실합니다.)


구글링을 해보니 답이 나옵니다.  아래 PDF 문서에, AC922의 두 processor socket을 연결하는 SMP X bus의 spec이 "X-Bus 4B @ 16GHz"라고 나온 것입니다.   기존 Minsky 서버의 SMP X bus의 spec은 "8B @ 4.8 GHz"였습니다.



(출처 : https://www.ibm.com/developerworks/community/wikis/form/anonymous/api/wiki/61ad9cf2-c6a3-4d2c-b779-61ff0266d32a/page/1cb956e8-4160-4bea-a956-e51490c2b920/attachment/9a8eabe8-10b8-4a8e-aebe-3a3845b71c0f/media/Power%20Systems%20AC922%20Intro%2011December2017%20.pdf )

이 spec을 대역폭(GB/s)으로 환산하는 것은 어떻게 하는 것일까요 ?  다음 문서에 나옵니다. 

https://www.redbooks.ibm.com/redpapers/pdfs/redp5405.pdf

기존 Minsky 서버의 SMP X bus 대역폭 :  8 bytes * 4.8 GHz = 38.4 GB/s

AC922 서버의 SMP X bus 대역폭 : 4 bytes * 16 GHz = 64 GB/s

즉, AC922 서버는 NVLink 1.0 80GB/s에서 NVLink 2.0 150GB/s로의 비율만큼, SMP X bus의 속도도 끌어올린 것입니다.   이 64GB/s라는 속도는 NVLink 2.0 1개 link인 50GB/s보다 오히려 더 뛰어난 속도로서, 4개 GPU를 이용한 Deep Learning에 충분한 속도를 제공합니다.

한편, x86 서버 프로세서 중 최신인 Skylake Scalable Processor는 기존 Broadwell의 2 x QPI @ 9.6 GT/s를 3 x UPI @ 10.4 GT/s로 업그레이드했습니다.   (출처 : https://www.servethehome.com/intel-xeon-scalable-processor-family-platform-level-overview/ )   이 GT/s를 Gbps로 변환하면 PCIe Gen3 기준으로 대략 98%이므로 (출처 : https://paolozaino.wordpress.com/2013/05/21/converting-gts-to-gbps/ ) 대략 30.72 Gbps가 됩니다.   ( 3 x 10.4 x 128/130 = 30.72 ) 

댓글 없음:

댓글 쓰기