博客專欄

EEPW首頁(yè) > 博客 > 談?wù)凬VLink那些事

談?wù)凬VLink那些事

發(fā)布人:旺材芯片 時(shí)間:2023-07-04 來(lái)源:工程師 發(fā)布文章

來(lái)源:知乎,作者夏晶晶


寫這個(gè)源自我在清華同窗一個(gè)技術(shù)八卦群聊起了nvlink的若干技術(shù),然后就打算寫一寫我作為一個(gè)旁觀者所見(jiàn)并試圖還原的nvlink的歷史。

圖片

首先申明,我沒(méi)有在NVIDIA工作過(guò)一天,也沒(méi)有獲取一些非正常渠道的秘密信息或文檔,但這不妨礙我把所有從公開(kāi)渠道獲得的零碎信息組裝成一個(gè)相對(duì)完備的邏輯…………大多數(shù)歷史都是官方潤(rùn)色過(guò)的并故意隱藏掉細(xì)節(jié)的,nvlink也不例外。正如一個(gè)博主所說(shuō),我們?cè)谡劦今R嵬坡的時(shí)候,往往想到的歷史就是楊玉環(huán)、李白、《妖貓傳》,還有山口百惠,但是真正能夠讓我們以史為鑒知興替的,是為什么是在馬嵬坡?這一切究竟是怎么發(fā)生的?禁軍的榮譽(yù)感和忠誠(chéng)度呢?為什么面臨帝國(guó)內(nèi)亂,他們想到的第一件事情不是逃難,不是反攻,而是干掉一個(gè)叫做楊國(guó)忠的人?為什么干掉楊國(guó)忠那么重要?甚至于最近的,為什么是那個(gè)廚子?

圖片

這個(gè)世界沒(méi)有什么下大棋,歷史的真相如果當(dāng)局者沒(méi)有總結(jié),后人或者旁觀者都只能通過(guò)一個(gè)個(gè)小故事的細(xì)節(jié)和關(guān)系,梳理總結(jié)成完整的邏輯。我希望通過(guò)推測(cè)盡可能看到Nvlink歷史上的若干細(xì)節(jié)故事,還原出它的部分真實(shí)。

長(zhǎng)Nvlink的誕生

Nvlink誕生于超算 :) 是的,超算。在AI出盡風(fēng)頭之前,IT領(lǐng)域真正的技術(shù)探索其實(shí)都是依賴于超算驅(qū)動(dòng)的,這是一個(gè)類似于攀登珠穆朗瑪峰并沿途下蛋的持續(xù)性技術(shù)改良的模式 :) 和當(dāng)下AI驅(qū)動(dòng)技術(shù)動(dòng)輒就顛覆的模式相差蠻大,說(shuō)不上誰(shuí)優(yōu)誰(shuí)劣,最終都是優(yōu)勝劣汰吧。Nvlink的初始技術(shù)相當(dāng)大部分來(lái)源于IBM,是的,IBM幾乎是一切技術(shù)的源頭??紤]到IBM那些年在美國(guó)的超算市場(chǎng)逐漸下滑,曾經(jīng)的Blue Gene黯然失色,而Nvidia又恰好想在技術(shù)上更進(jìn)一步,他們的結(jié)合以IBM的高傲大概率是Nvidia主動(dòng)貼上去的,但也算得上郎有情妾有意,不過(guò)分手的時(shí)候也大概率Nvidia賺得最大。IBM和Nvidia曾經(jīng)是有過(guò)一段如膠似漆的日子。最簡(jiǎn)單的,你看業(yè)界的文檔標(biāo)注IO帶寬的時(shí)候,只有兩家是乘以二把TX和RX算到一起的,例如正常我們談200G網(wǎng)口的時(shí)候,這網(wǎng)口就是8組25Gbps的Serdes,但I(xiàn)BM和Nvidia是唯二把這個(gè)IO標(biāo)成400G的 :) 后來(lái)被NVIDIA收養(yǎng)的Mallenox應(yīng)該很不習(xí)慣。Nvidia GPGPU的片上總線NoC看上去也有很多IBM的影子,我經(jīng)常把IBM的NOC論文中的行為套到Nvidia上,幾乎都對(duì)。應(yīng)該還有很多,我們能夠找到關(guān)于這段感情遺留的痕跡。嗯,回到Nvlink,它提出的主旨很簡(jiǎn)單,就是突破PCIe的屏障,達(dá)成GPU-GPU及CPU-GPU的高效數(shù)據(jù)交互,當(dāng)年正是intel把持pcie最惡劣的情況,PCIe device之間的數(shù)據(jù)直通需要經(jīng)過(guò)CPU才行(基于所謂訪問(wèn)安全的約束)。所以,那是2016年的秋天,橙黃橘綠,IBM的Power8和Nvidia的P100完成了基于Nvlink的靈與肉的結(jié)合,2+4,沒(méi)有PCIe,產(chǎn)品是HPC。


圖片


Nvlink的演進(jìn)

  • - Pascal的Nvlink1.0的IO速率是20Gbps,8Lane per Port,每個(gè)Port 320Gbps(雙向),這其實(shí)是一代不完全成熟的產(chǎn)品,因?yàn)檫@個(gè)Port的速率很獨(dú)特,GPGPU內(nèi)部微架構(gòu)團(tuán)隊(duì)可能也還沒(méi)有完全接納。

  • - Volta的Nvlink2.0的IO速率是25Gbps,8Lane per Port,每個(gè)Port 400Gbps(雙向),從此時(shí)開(kāi)始,GPGPU對(duì)這個(gè)數(shù)字就鎖定了。

  • - Ampere的Nvlink3.0的IO速率是50Gbps,4Lane per Port,每個(gè)Port 400Gbps(雙向)。

  • - Hopper的Nvlink4.0的IO速率是100Gbps,2Lane per Port,每個(gè)Port 400Gbps(雙向)。

  • - Blackwill的Nvlink5.0,沒(méi)發(fā)布,但以此類推,大致就是IO速率200Gbps,1Lane per Port,每個(gè)Port 400Gbps。

我就好奇大了,Blackwill Next咋辦呢?IO速率400Gbps?1/2 Lane per Port ?P:V:A:H:B的Port數(shù)量依次是4:6:12:18:24,以此遞增芯片帶寬160GB/s:300GB/s:600GB/s:900GB/s:1200GB/s。很多人對(duì)單個(gè)Port速率固定,每代增加Port數(shù)量的方式不太理解:) 這其實(shí)是一個(gè)芯片快速設(shè)計(jì)的技巧,即每個(gè)Port的MAC在逐代演進(jìn)中可以做到幾乎不變或只是不斷精細(xì)化打磨。至于多個(gè)端口之間帶寬怎樣分配?其實(shí)也是解耦的,Nvidia采用了Swizzle隨機(jī)+地址求模的方式均衡Port間的帶寬(從這里你能看到Nvlink是多路徑亂序的協(xié)議)。下圖是Nvlink在2016年誕生時(shí),黃教主播下的種子,留下的期待 :)


DGX和HGX


大狗熊和黑狗熊,很多人傻傻分不清。

Nvidia最初推出的是DGX,2016年發(fā)布的第一代DGX-1,這玩意兒其實(shí)是一個(gè)單機(jī),嚴(yán)格來(lái)講,小型機(jī)。雖然當(dāng)年數(shù)據(jù)中心建設(shè)雖然如火如荼,但Nvidia還是希望能以一個(gè)硬件system的模式,把一個(gè)Box賣給客戶,并獲得足夠高的利潤(rùn)。君不見(jiàn),這玩意兒渾身內(nèi)外都涂滿中東土豪的金色,差點(diǎn)就想告訴你你買了一塊大金磚。

圖片

DGX-1差不多是15萬(wàn)美元左右,到DGX-2則到了40萬(wàn)美元,相比買單卡的溢價(jià)非常高,買到即虧到。DGX并不適合世界上最大的IT采購(gòu)商:Cloud,缺乏彈性,我猜它賣得并不那么好,當(dāng)然作為旗艦產(chǎn)品撐場(chǎng)子是絕對(duì)合格。簡(jiǎn)單的說(shuō),DGX V100的CPU連塊網(wǎng)口都沒(méi)配置,更不用提符合Cloud Service的DPU。其實(shí)Nvidia也是到了Ampere的時(shí)代,才理解了數(shù)據(jù)中心的OVS :) 其標(biāo)識(shí)在于CPU開(kāi)始配置獨(dú)立網(wǎng)卡CX6并支持VPI。大狗熊和黑狗熊長(zhǎng)得是很像 :) 但細(xì)節(jié)展開(kāi)差別蠻大的。今天講Nvlink,那以V100 DGX vs HGX為參考,DGX的跨板Nvlink是通過(guò)背板互聯(lián)的,而HGX的跨板Nvlink是通過(guò)線纜互聯(lián)的。就這么個(gè)點(diǎn),至少就決定了DGX只能整機(jī)在Nvidia購(gòu)買,而HGX是可以賣獨(dú)立器件再OEM給浪潮、Dell制造組裝的(后者是大型互聯(lián)網(wǎng)客戶的典型采購(gòu)模式)。其實(shí)呢,互聯(lián)網(wǎng)的同學(xué)們也是騙自己,還在假裝自己是買到了最便宜的白盒Device,然后做了高難度的DIY呢 :)

NvSwitch的演進(jìn)

Nvlink至今到Hopper發(fā)展了四代,而Nvswitch至今有三代 :)也就是說(shuō)第一代Pascal時(shí)期其實(shí)是沒(méi)有Switch的,當(dāng)年的一機(jī)八卡,是一種類似Cube的直連系統(tǒng)。多卡系統(tǒng)做Reduce怎么都是跑不掉的,oh,holy shit,當(dāng)年分析Cube直連系統(tǒng),算Ring Reduce的路徑覆蓋最大化可真玩死哥了。我感覺(jué)應(yīng)該很多人和我一樣,紛紛給Nvidia留言了“fxxk”、“Damn”等信息,握爪。

圖片

Nvidia受不了了,既然這么多程序員的數(shù)學(xué)都是體育老師教的,那還是暴力全交換吧。所以在Volta to Ampere之間的2018年,Nvidia推出了基于NvSwitch的DGX-2(HGX和DGX差別在于硬件設(shè)計(jì),邏輯上兩者是一樣的)。

  • - Pascal只有DGX-1
  • - Volta有DGX-1和DGX-2
  • - Ampere及Hopper只有DGX-2
  • - 什么時(shí)候會(huì)有DGX-3呢?

nvlink2.0對(duì)應(yīng)的Nvswitch1.0支持18個(gè)Port,每個(gè)port x8,IO速率25G,交換能力就是400x18 =3.6Tbpsnvlink3.0對(duì)應(yīng)的NvSwitch2.0支持36個(gè)Port,每個(gè)Port x4,IO速率50G,交換能力就是400x36 = 7.2TbpsNvlink4.0對(duì)應(yīng)的Nvswtch3.0支持64個(gè)Port,每個(gè)Port x2,IO速率100G,交換能力就是400x64 = 12.8Tbps嗯,對(duì)數(shù)字敏感的同學(xué)有沒(méi)有覺(jué)得很奇怪 :) 為什么是18?不是16 = 2^4 ? 不是說(shuō)好一機(jī)八卡嗎?因?yàn)閻?ài)?。。?!這多余的兩個(gè)Port是為IBM留著的,其他人都不配。你不信?你打開(kāi)你買到的DGX V100/A100的機(jī)框看看,所有的NvSwitch芯片,都只連接了16個(gè)Port,無(wú)論誰(shuí)家買的,都有2個(gè)Port在哪兒,多情自古空余恨啊。Nvidia翹首以盼,整整等了兩代,IBM都無(wú)法再次崛起重新入主超算領(lǐng)域,反而迎來(lái)了AI的爆發(fā)。我們從IBM流出的一張圖可以看到,支持Nvlink3.0(Nvswitch2.0)的Power9原本是在計(jì)劃中的(HC30),但最終,IBM,那個(gè)男人,他沒(méi)有做到他的承諾。

圖片


Nvidia固然從IBM得到了很多,但是最終它并沒(méi)有辜負(fù)這段感情。

Nvlink-Network的誕生

Nvlink-Network和Nvlink是兩個(gè)東西,是兩個(gè)東西,是兩個(gè)東西。為什么好好的有Nvlink了,還搞Nvlink-Network ?這個(gè)問(wèn)題的源頭來(lái)自HGX的形態(tài),為什么DGX/HGX-2 V100有8P和16P兩種機(jī)器銷售?但DGX/HGX-2 A100卻只有8P唯一形態(tài) ?下圖是Nvidia官方的Nvswitch互聯(lián)圖。

圖片

下圖是A100的HGX單板,黃教主端在手上,注意看最右側(cè),六顆NvSwitch芯片的右端,是跨板的Nvlink端口,通過(guò)這一組端口你可以將兩張8P的A100單板組合成一個(gè)16P的HGX系統(tǒng)。OTT負(fù)責(zé)基礎(chǔ)設(shè)施的老板們啊,中國(guó)那花10億美元購(gòu)買A100的那個(gè)公司啊,打開(kāi)你的機(jī)箱看一看,你定制的HGX A100單板,Nwswitch芯片的外側(cè)端口,是不是懸空的?

圖片


為什么?難度微軟給OpenAI提供的是一機(jī)八卡的HGX做訓(xùn)練,所以中國(guó)做AI的所有人,所有人都認(rèn)為只能做一機(jī)八卡了?哦,你畫了幾十萬(wàn)美元買的A100八卡板,他的NvSwitch3.0芯片,都在哭o(╥﹏╥)o啊,18個(gè)Port,其中兩個(gè)Port永遠(yuǎn)地留給了那個(gè)男人,但是還有8個(gè)Port是懸空的啊,懸空的啊。嗯,中國(guó)購(gòu)買的所有NvSwitch3.0芯片,都只使能了8/18的Port。。。。。。。老板,快開(kāi)除那些不上進(jìn)的家伙。這個(gè)世界上根本就沒(méi)有16P的A100,對(duì)吧?不對(duì)啊,有一家有,如下,Google的A2-MegaGPU-16g實(shí)例,這是我在世上唯一找到官方的A100 16P系統(tǒng)。

圖片

Google Machine Type a2-megagpu-16ghttps://gcloud-compute.com/a2-megagpu-16g.html
微軟和AWS都沒(méi)有看到A100的16P實(shí)例,先不忙裁人,這事必有蹊蹺 :)我不是Nvidia的架構(gòu)師,不知道詳情是什么。我只能猜測(cè)一個(gè)答案。Nvlink這個(gè)協(xié)議其實(shí)不適合跨Board,對(duì)Cable不適。大概率,Nvlink是做Nvidia做計(jì)算的同學(xué)主導(dǎo)的,類似Intel的UPI,做計(jì)算的人做IO,往往都圖個(gè)簡(jiǎn)單粗暴,沒(méi)有做強(qiáng)大的糾錯(cuò)碼,也沒(méi)有出錯(cuò)重傳的設(shè)計(jì),遇到丟包直接全機(jī)藍(lán)屏。勇敢地說(shuō),我是計(jì)算的,我做互聯(lián)也是這德行 :)Nvlink1的速率是20G,Nvlink2的速率是25G,Nvlink3的速率是50G,Nvlink4的速率是100G,真的都是整數(shù)哦,你看,只有做計(jì)算的人才干的出來(lái),網(wǎng)絡(luò)的人不會(huì)這么莽的。做網(wǎng)絡(luò)的同學(xué)會(huì)用26.5625G、53.125G、106.25G,這種完全無(wú)厘頭的頻點(diǎn),這也是大多數(shù)Cable和Optical Fiber的頻點(diǎn)。此外,16P的A100系統(tǒng),兩個(gè)單板之間需要互聯(lián)64x6 = 384 Lane需要互聯(lián),無(wú)論是cable還是Connector,大致上都有非常巨大的工程問(wèn)題。為什么Google搞定了?為什么技術(shù)不能復(fù)制到全世界?不知道。但我猜Mallenox的同學(xué)被Nvidia包養(yǎng)之后,來(lái)了IO的同學(xué),一看,這隊(duì)友是在送人頭 ?扶了一把。所以,就有了Nvlink-Network。Nvlink-NetWork大致上是按照網(wǎng)絡(luò)的方法做了協(xié)議改造,對(duì),你打開(kāi)Hopper驅(qū)動(dòng),歷歷在目,100G頻點(diǎn)之外,多了一個(gè)106.25G,IB的Sharp也被融合到Nvlink-Network放到了Nvswitch內(nèi)部(驅(qū)動(dòng)都沒(méi)變)。收購(gòu)Mallenox是Nvidia最成功的聯(lián)合了吧。雖然從近期GH200的故事來(lái)看,Nvlink-Network的領(lǐng)域在逐步擴(kuò)大,已經(jīng)到了256,下一跳,肉眼可見(jiàn)的范圍內(nèi),Nvlink-Network會(huì)吃掉IB。以色列人可能也無(wú)所謂吧,畢竟股票賺了那么多。。。。。。。
最后露一個(gè)值個(gè)幾萬(wàn)塊的Nvlink-Network的秘密 :)Hopper的Nvlink帶寬是900GB,要在這么巨大的帶寬上同時(shí)滿帶寬支持Nvlink-Network需要的特性,包括重傳、糾錯(cuò)、編碼等,GPU寶貴的Silicon面積會(huì)被耗掉非常多,至少1000個(gè)CUDA Core起步吧 :)我給的答案是:只有GPGPU+Nvswitch才能組合出完整的Nvlink-Network,懂的自然懂。

Nvlink-C2C的誕生

先說(shuō)結(jié)論:Nvlink-C2C是個(gè)錯(cuò)誤的技術(shù)路徑。我仿佛記得Nvlink-C2C的主架構(gòu)師Wei wei是我大學(xué)同學(xué) ?有這么個(gè)模糊印象。如果單純從技術(shù)的角度,Nvlink-C2C真的是一個(gè)恰到好處的設(shè)計(jì),挺佩服的。增之一分則太長(zhǎng),減之一分則太短,信號(hào)速率低了,PCB會(huì)變貴,信號(hào)速率高了,功耗會(huì)變高。但是Nvlink-C2C從系統(tǒng)來(lái)講,并不是個(gè)好選擇。總遇到有些人,把NVIDIA當(dāng)宗教信仰一樣崇拜,把黃教主說(shuō)的就當(dāng)做圣言。嗨。

  • - 為什么要綁定Grace+Hopper的1:1配比?那下一代Grace+Blackwell也是1:1 ?

  • - 為什么每個(gè)GPU只能配搭500GB DDR容量?GPU這么貴,就不能一顆GPU搭兩顆CPU帶1TB DDR嗎?

  • - 為什么要配搭高價(jià)銷售?愛(ài)馬仕賣中國(guó)人就一定要配貨銷售嗎?

  • - 為什么不就用Nvlink?Nvlink C2C是900GB帶寬,也就x36Lane的Nvlink4罷了。

  • - 資源池化、池化、池化知道不?

嗯,你會(huì)說(shuō),Nvlink-C2C功耗低啊,號(hào)稱是PCIe的1/5啊,話是沒(méi)錯(cuò),可這省的功耗大致是多少?算一算啊,不到10W!你明白了嗎?在一個(gè)700W功耗的GPU上,有一個(gè)技術(shù)省了10W,作為一種噱頭,高價(jià)賣給你,你是不是賺大了?你已經(jīng)回顧了Nvlink的整個(gè)歷史,你的心中應(yīng)該有一個(gè)正確的答案,最佳的搭配,應(yīng)該是IBM+Nvidia那種,讓CPU和GPU都支持Nvlink,然后通過(guò)NvSwitch應(yīng)該做非2^N的Port數(shù)量,方便搭配,GPU和CPU基于NvSwitch做全交換。當(dāng)前Nvlink-C2C所號(hào)稱的所有好處,DVM、Cache Coherence,都是能夠拿到的。為什么不呢?我猜Nvidia收購(gòu)ARM最終沒(méi)有成功,雖然魔改了ARM的NoC,但是想在ARM的Memory Model中加入Nvlink接口,水平不夠。嗯,我上我可以的。^_^這些大致是截2023-06的Nvlink的歷史了,從最初的超算想要脫離PCIe的束縛為起點(diǎn),到現(xiàn)在不僅僅自身不斷在前進(jìn),還不斷侵蝕周邊,向上打IB,向下吃Chiplet,都是可以載入人類計(jì)算機(jī)體系結(jié)構(gòu)的歷史。但這些大概率都不是其誕生的第一天就規(guī)劃好的,他更是像一個(gè)活物,隨著環(huán)境的變化和各種機(jī)緣巧合的事件觸發(fā),不斷膨脹、進(jìn)化、吞噬,螺旋上升,但天下并無(wú)長(zhǎng)生不滅者,有生之年,一起扶階而上吧,希望我們可以看至終章吧。

-End-


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: NVLink

技術(shù)專區(qū)

關(guān)閉