<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

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

談?wù)凬VLink那些事

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

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


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

圖片

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

圖片

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

長(cháng)Nvlink的誕生

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

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

  • - 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ā)布,但以此類(lèi)推,大致就是IO速率200Gbps,1Lane per Port,每個(gè)Port 400Gbps。

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


DGX和HGX


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

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

圖片

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

NvSwitch的演進(jìn)

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

圖片

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

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

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

圖片


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

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兩種機器銷(xiāo)售?但DGX/HGX-2 A100卻只有8P唯一形態(tài) ?下圖是Nvidia官方的Nvswitch互聯(lián)圖。

圖片

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

圖片


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

圖片

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

Nvlink-C2C的誕生

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

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

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

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

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

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

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

-End-


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



關(guān)鍵詞: NVLink

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>