英特爾是第一家在CPU封裝當中添加HBM堆疊DRAM內存的主要CPU製造商,相應推出的正是「Sapphire Rapids」Max系列至強SP處理器。但隨著「Granite Rapids」至強6的發布,英特爾決定放棄使用HBM內存,轉而採用其希望推向主流的MCR DDR5主內存。該內存採取頻分多路復用設計,可將帶寬提升至近2倍於常規DDR5內存。
英特爾之所以為Sapphire Rapids添加HBM內存,當然有其現實考量。其主要目的是為了提高百億億次「Aurora」混合CPU-GPU超級電腦中的CPU性能。這台超級電腦是英特爾在HPE的幫助下專門為阿貢國家實驗室量身打造而成。Aurora設備擁有2.1248萬個至強SP Max系列CPU,封裝在10624個節點當中,此外還配備總計63744張英特爾「Ponte Vecchio」Max系列GPU。(即單一節點中由兩塊CPU搭配六塊GPU,幾乎已經占去了Cray EX托盤設計的全部物理空間。)
晶片巨頭向CPU中添加HBM內存的另一個原因,是希望其他高性能計算中心能由此意識到對於尚未被移植至GPU而仍在沿用CPU的應用程序(或者即使經過移植也無法在工作負載上獲得更佳性能的應用程序),只要搭配一塊擁有更大內存帶寬的CPU(大約達到常規DDR5內存的4到5倍),那麼無需面向GPU移植代碼也能顯著提高應用程序的性能表現。
我們認為把HBM引入CPU確實有其合理性。除了Aurora之外,另外一些頗受關注的設備也在使用這種內存設施,包括2022年9月安裝在洛斯阿拉莫斯國家實驗室的「Crossroads」ATS-3全CPU集群。Crossroads總計部署有11880塊英特爾至強SP-9480 Platinum Max處理器,每塊處理器提供56個運行主頻為1.9 GHz的核心,總計提供66.08萬個核心,可在6.28兆瓦的功率範圍之內以FP64精度提供40.18千萬億次的峰值理論浮點運算性能。
但正如前文提到,由於沒有繼續發布擁有更大性能核(即P核)的Granite Rapids至強6版HBM處理器,英特爾給AMD的HBM增強型CPU留下了發揮的空間。而這,正是傳聞中基於Instinct MI300系列計算引擎的「Antares-C」變體。
「Antares」MI300X擁有八塊GPU晶片,但在軟體層次上其觀感類似於單塊GPU。本周在SC24超級電腦大會上亮相的蘿倫斯利弗莫爾國家實驗室「El Capitan」系統中使用的「Antares-A」MI300A就擁有六塊GPU晶片以及三塊八核「Genoa」晶片、總計24個核心(每晶片八核心)。本周在SC24大會和拉斯維加斯召開的微軟Ignite大會上同時亮相的MI300 C,則是將Genoa芯粒部署在MI300封裝之內——即兩列六晶片下囊括十餘個芯粒——共可提供96個Genoa核心,我們推測其運行主頻與El Capitan中使用的MI300A混合計算引擎上的Zen 4核心同樣為1.9 GHz。順帶一提,MI300A上的GPU芯粒的峰值主頻為2.1 GHz。
然而,這款設備並非以MI300C的名號銷售,而被納入了Epyc CPU產品線之下,因此定名為Epyc 9V64H,跟英特爾的至強SP Max系列CPU一樣明確面向高性能計算類工作負載。也就是說,該設備將適用於類似MI300 X和MI300A設備的SH5插槽,而非用於Epyc 9004(Genoa)和9005(Turin)系列的SP5插槽。
值得注意的是,AMD及其MI300C設備的首位客戶微軟Azure並沒有選擇基於較新Turin Zen 5核心建立的計算引擎變體。當初AMD著手為El Capitan製造混合CPU-GPU晶片時,MI300C的工作應該已經基本完成,AMD顯然不希望讓Turin的秘密過早暴露,否則蘿倫斯利弗莫爾實驗室可能會要求調整MI355A中的Antares GPU以確保與El Capitan的Turin CPU旗鼓相當。
話雖如此,對於AMD來說,基於Zen 5c核心的Turin晶片來打造MI355A或者Epyc 9V65H也不會是什麼太大的工程技術挑戰。Turin X86 CPU於今年10月發布,提供採用3納米製程工藝的八核Turin晶片,使得每插槽所能容納的晶片數量增加了三分之一,因此核心數量也從Genoa的96個增加到了Turin旗艦版本的128個。當然,Turin晶片和MI300 SH5插槽可能已經發布,但理論上AMD確實可以將16個X86芯粒排成兩列以快速構建起具有128核心的MI355C——畢竟AMD在Epyc 9006系列中就是這樣設計的。真正的問題在於,MI300系列當中的新款I/O晶片到底能否無縫接入Turin晶片。
最重要的是,Epyc 9V64H擁有128 GB的HBM3內存,峰值主頻速率為5.2 GHz,可提供總計5.3 TB/秒的峰值內存帶寬。相比之下,使用4.8 GHz DDR5內存的普版Genoa SP5 CPU插槽只能在十二條DDR5內存通道上提供460.8 GB/秒的帶寬。也就是說,同樣是以96個Genoa計算核心為參考標準,前者的內存帶寬可提高至11.3倍。
順帶一提,2022年11月推出的至強SP Max系列CPU擁有四個HBM2E內存棧,總容量為64 GB,該內存的總帶寬超過1 TB/秒。也就是說,AMD提供的核心數量增加了71%,內存容量增長至2倍,內存帶寬則相當於英特爾HBM CPU的約5倍。
更妙的一點在於,微軟為Epyc 9V64H處理器選擇的歸屬其實是Azure雲上的四插槽HBv5實例——從該實例的配置來看,核心和內存的某些指標相較其峰值理論上限稍微調低了一點,這應該是為了拉高其他某些屬性而做出的權衡。
El Capitan系統採用Infinity Fabric將四個MI300A單元交叉耦合至共享內存結構當中,以便其混合CPU-GPU核心共享512 GB的HBM3內存。而微軟似乎也在使用相同的架構:
據我們所知,無論是誰在負責為HPE製造這批系統板,其最終客戶都是微軟Azure——甚至有理由懷疑,正是HPE親自在為Azure HBv5實例及其背後的整個伺服器節點製造主板。
這批用於MI300C的四路伺服器卡(也就是Epyc 9V64H)擁有四個Infinity Fabric埠,可交叉鏈接四個SH5插槽,該內存架構擁有128 GB/秒帶寬,同時為每節點提供四個PCI-Express 5.0 x16插槽。微軟方面表示,這一參數已經達到迄今為止所有AMD Epyc平台Infinity Fabric帶寬的兩倍。
無論如何,最重要的一點在於,AMD使用SH5插槽為其GPU式計算引擎建立了四路共享內存配置,但其實際CPU設置仍然只能達到雙路共享內存配置。但如果客戶需要一台AMD四路設備,也並非不可能,具體設計方式imetEl Capitan和微軟設備的思路即可。AMD後續應該會正式推出四路伺服器,藉此在高端內存內資料庫和分析市場上與IBM和英特爾一較高下,目前看來AMD已經做好了前期準備。
為了應對高性能計算領域那些需要更高內存帶寬的工作負載,微軟Azure一直在其HBv3實例中使用64核「Milan-X」Epyc 7V73X CPU,在其HBv4實例中使用的則是96核「Genoa-X」9V84X CPU。這些是AMD為微軟Azure打造的Milan-X與Genoa-X晶片的特殊變體。有些朋友可能還記得,這款X變體搭載有3D V-Cache,可將其L3緩存增加至三倍,並在帶寬受限的應用程序上將性能提高約50%至80%。這種情況在高性能計算模擬和建模工作負載當中頗為常見。
在遷移到HBM內存之後,3D V-Cache的性能優勢自然就大打折扣了。當然,部分原因也在於MI300C綜合體在其X86核心塊下還設有「Infinity Cache」,負責充當核心與外部HBM內存的超高速連接中介。我們之前曾經提到過,這裡再次強調:只要價格足夠便宜,所有晶片都應該採用3D V-Cache,藉此在計算綜合體上留出更多物理空間,同時縮小核心上的L3緩存區域。
以下是微軟製作的一張有趣圖表,顯示了遷移到MI300C的96核Genoa計算綜合體在帶寬方面的優勢:
在本周SC24大會上,當我們與蘿倫斯利弗莫爾國家實驗室利弗莫爾計算公司的首席技術官Bronis de Supinski討論起El Capitan系統時,他向我們證實稱其CPU核心「獲得的帶寬超過了實際能夠驅動的帶寬」。這或許可以解釋,為什麼多數CPU並沒有配備HBM內存。
如果我們以128 GB HBM3內存為每個MI300系列SH5插槽提供5.2 TB/秒的速度來聚會,那麼在將四個內存插槽加起來的話,則四個SH5插槽將總計擁有20.8 TB/秒的帶寬。多年以來,在我們研究過的大多數機器上,STREAM Traid基準測試得出的持續內存帶寬一般為單個設備峰值理論帶寬的80%。因此可以推斷STREAM Traid的持續帶寬為16.6 TB/秒。另外可以肯定的是,Infinity Fabric的NUMA特性也會帶來自己的性能開銷,只是很難準確加以量化。在CPU系統上,四路NUMA設置的性能肯定達不到4倍,一般為3.65倍。(在CPU之間鏈路數量增加一倍的雙路插槽上,峰值理論值為2倍,而實際性能值一般為1.95倍。)
但在微軟Azure通過其HBv5實例運行的STREAM Traid測試中,持續內存帶寬達到6.9 TB/秒,遠低於峰值聚合帶寬的20.8 TB/秒。考慮到CPU核心可能無法像擁有大量並行核心的GPU那樣驅動高帶寬,也許有必要降低HBM內存子系統的速率以匹配CPU的性能特徵。這是一種奇怪的現象,我們已經呼籲AMD和微軟就STREAM Traid結果做出解釋,特別是其為什麼實際測試數值只有我們根據NUMA開銷及過往獨立設備上STREAM測試經驗得出的預期值的1/2.2。
話雖如此,四路伺服器的6.9 TB/秒成績仍遠遠超過了Azure用於提高以往存在內存帶寬瓶頸的HPC應用場景下其他雙插槽伺服器。HBv5實例能夠將512 GB系統總HBM3內存當中的400 GB到450 GB,提供給高性能計算應用程序使用。如果取區間的最高值,則相當於每核心3.5 GB,這比Sapphire Rapids HBM配置下的每核心1 GB左右要大得多。Azure上HBv5實例每核心最高可以配置為9 GB內存,因為每核心對應的內存容量允許用戶靈活設定。在機箱上的總計384個核心上,有352個可供實例上運行的應用程序使用。HBv5實例中共分配了62 GB到112 GB的HBM3內存加32個核心作為運行開銷。(令人驚奇的是,為什麼微軟的虛擬機管理程序及其他開銷沒有像亞馬遜雲科技使用的「Nitro」NIC那樣將負載移交給DPU,事實上谷歌也在嘗試使用「Mount Evans」NIC達成同樣的效果。)
HBv5實例還禁用了同時多線程(SMT)以提高性能,意味著這也是個單租戶實例。該實例配備一個800 Gb/秒的Quantum 2 InfiniBand埠,該埠又被劃分成四個虛擬200 Gb/秒埠,對應每插槽一個。這些InfiniBand NIC負責將節點聚集起來以共享作業,並且使用Azure VMSS Flex(即虛擬機規模集),其中的「Flex」代表其非常靈活,因為它可以將虛擬機分布在區域或可用區的故障域之內。微軟方面表示,其可以「將MPI工作負載擴展至數十萬個由HBM內存驅動的CPU核心之上。」
這意味著微軟已經在各區域當中部署了數千台四CPU伺服器,因此才敢於做出這樣的聲明。該系統還具備基於以太網的Azure Boost網路接口卡,可為HBv5實例下的機器提供160 Gb/秒的網路連接。該機器配備14 TB的NVM-Express冷艷,能夠以50 GB/秒的速度讀取數據、並提供30 GB/秒的數據寫入速度。
HBv5實例目前正處於預覽階段,尚不清楚正式上線時間。MI300C(也就是Epyc 9V64H)目前僅通過微軟對外開放,顯然是與微軟密切合作開發而成。微軟希望在Azure之上運行更多高性能計算代碼。對於眾多高性能計算客戶來說 ,能夠在無需移植代碼的前提下通過CPU獲得具備GPU級內存帶寬的硬體,無疑將大大減輕從本地向雲端遷移的運營負擔。
話雖如此,但我們還是衷心期待OEM和ODM廠商也能拿到MI300C。也許到了MI355C和MI400C發布的時候,這一切都將成為現實。