當前位置:
首頁 > 最新 > 科技觀察:神威·太湖之光超級計算機

科技觀察:神威·太湖之光超級計算機

舊文搬運,以後也會陸續將多年的文章轉移於此,不是微信公眾號發布系統做的好,實在是其它的發布系統太爛。

本文經過了較大量的資料查閱分析,在當時亦是覺得比較滿意的文章,內容即時是到現在也未過時。

字數:超過7,700字,閱讀需要時間:尚不明確。

目錄:

P01:新神威·太湖之光:CPU架構與微架構

P02:神威·太湖之光:CPU板與系統Fabric

P03:神威·太湖之光:浮點運算性能與實際測試

P01:新神威·太湖之光:CPU架構與微架構

【ZD Research】日前,在德國法蘭克福宣布了最新版的全球超級計算機TOP500排行榜,榜首的是一台新機器——神威·太湖之光(英文名Sunway TaihuLight),這是一台由NRCPC(National Research Center of Parallel Computer Engineering & Technology,中國國家並行計算機工程與技術研究中心)負責研發,安裝在江蘇無錫的國家超級計算機中心的超級計算機系統。

神威·太湖之光超級計算機(The Sunway TaihuLight Supercomputer System)

太湖之光在很多方面吸引了我們的注意,但最主要的原因是,由於各方面資料的缺乏,國內外對其解讀都有不少的誤會。本文若無特別注釋,所有關於神威·太湖之光(Sunway TaihuLight)的資料均來自於Jack Dongarra(後面還會詳細提到此人)的《Report on the Sunway TaihuLight System》。

神威·太湖之光超級計算機規格表,內存總容量為1.25PiB

神威·太湖之光一共由40960個節點組成,每個節點就是一個CPU組成的一台獨立主機,這個CPU由國家高性能集成電路(上海)設計中心提供,每個CPU由260個核心組成,系統一共具有10,649,600個核心,每個CPU搭配32GiB的內存,總內存數量就是1310720GiB,參數表裡面寫的是1.31PB——然而,這個寫法並不精確,區別在於「GiB」與「GB」、「PiB」與「PB」。

在容量單位的運用上,一直存在著兩種不同的方式:硬碟廠商一直使用的是標準的SI國際單位制,也就是十進位,1KB = 1000B,1MB = 1000KB;在操作系統中使用的則是接近我們教科書的記法,也就是用2的10次方遞進,如1KB = 1024B,1MB = 1024KB(基於後面解釋的原因,這裡只是一個不準確的運用)。這兩個記法的不同導致了各種軟盤U盤硬碟容量的「縮減」,為了澄清類似的大量誤會,IEC(International Electrotechnical Commission,國際電工委員會) 在1998 年提出了新的二進位詞頭——在通常的SI十進位詞頭後面增加了一個字母i,這個i表示的是binary,例如,1KiB = 1024B,1MiB = 1024KiB,依次類推,這套記法被稱為IEC 60027-2單位制,並演變成後來的ISO/IEC IEC 80000-13:2008。

可以肯定的是,內存廠商儘管一般都用的是SI單位制標識,但其實際容量遵循的是IEC 60027-2單位制,也就是說,神威·太湖之光每個節點的內存容量肯定是32GiB而不是32GB,總容量是1310720GiB = 1280TiB =1.25PiB。基於保持精確的原因,筆者所有的文章中都會盡量應用二進位的IEC 60027-2單位制。

按照資料,申威SW26010(Shenwei SW26010)是一個異構的處理器,內部包含了4個CG(Core Group,核心組),每個CG分為兩個部分:Master Core(主核心)和Slave Cores(從核心),Master Core(主核心)包含一個MPE(Management Processing Element,管理處理單元),內容就是一個CPU核心;Slave Cores(從核心)包含一個CPE Cluster(CPE:文檔寫的是Computer Processing Element,計算處理單元,但從我的角度看,用「Compute Processing Element」更好,CPE Cluster就是計算處理單元簇,這裡Cluster不是宏觀意義上的「集群」的意思),這個簇包含了64個CPE核心。

100核心Tilera Tile-Gx處理器

在Core Group內部,CPE Cluster由8x8的Mesh網路(也就是二維網格網路)組成,內部採用Mesh架構的處理器典型的例子有Tilera(現已被Mellanox收購)的可以達到100核心的Tile-Gx處理器,以及Intel的可以達到72核心的KNL(Knight Landing)協處理器,這種拓撲結構的優點就是易於擴展,缺點是不同的核心間延遲不太均衡,某些路徑會形成熱點,並且如果要考慮親和性的話還需要做額外的工作,總的來說,這是一個考慮擴展性多於效率的架構。

注意裡面出現了64-bit、264-bit和62-bit三個特徵字元;文中「Each CPE Cluster is composed of a MPE...」這樣的句式是錯誤的

主處理器和從處理器的主頻都是1.45GHz,按照文檔,主處理器核心具有兩條流水線,具有32KiB的L1-I Cache和32KiB的L1-D Cache,以及256KiB的L2 Cache,從處理器核心則具有16KiB的L1-I Cache,沒有L1-D Cache和L2 Cache,取而代之的是每個核心都配置了64KiB的SRAM(靜態內存,使用6到8個晶體管保存一個bit數據的雙穩態開關),稱為SPM(Scratch Pad Memory,暫存內存),SPM和Cache是兩種不同的策略,通常來說,Cache是全自動硬體管理的,而SPM是一種內存,由應用程序進行管理。Cache的全自動硬體管理一般來說具有自動同步的優點,但相應電路會比較複雜,SPM則將複雜性拋給了應用程序,避免了大量核心環境下的同步問題。幾乎所有的處理器都基於Cache機制,而SPM一般應用於嵌入式處理器,面向固定的、具有確定性行為的應用程序,進一步地,SPM的大小一般也比較固定的,難以增大或縮小。Intel Knight Landing協處理器採用的是Cache機制,但其架構中包含的MCDRAM有些類似於SPM。



P02:神威·太湖之光:CPU板與系統Fabric

按照我們最好的猜測,神威·太湖之光應該是PCI Express與InfiniBand混合的Fabric。

一塊節點主板插卡上具有兩個節點,也就是具有兩套CPU和內存,它們可以共享供電部分(可能還有水冷散熱部分),其它都是各自獨立的

從節點主板上看,每一路內存上都具有9個晶元,因此這是一種ECC配置,話說,沒有ECC的大型系統是很難以想像的。內存控制器的規格應該是DDR3-2133,位寬128bit,因此每一路的帶寬為33.3GiB/s,每一個CPU,或節點的總帶寬為133.2GiB/s(在文檔中寫為136.51GB/s)。內存晶元是固定在主板上的,每節點總容量為32GiB。從空間上看,要增加容量需要重新設計主板。

每塊插板具有四塊插卡,其中插卡朝上,兩塊插卡朝下,每塊插卡兩個節點,因此每塊插板就是8個節點

從節點插卡和插板來看,它們沒有外部設備,並且也都沒有可以擴展CPU、內存的空間,也就是說,神威·太湖之光不僅僅CPU內部是固化的,節點、插板乃至插卡都是固化的,甚至機櫃也是:

Supernode,超級節點,由32塊插板組成,一共是256個節點,Supernode具有互聯邏輯上的實際含義,後面會提到

一套機櫃可以放置4個機箱——4個Supernode,也就是1024個節點,機櫃只是一個安置上的劃分,不是互聯邏輯上的劃分

機櫃也是獨立設計的,可以說,這是一套和業界沒有太多共性的系統,並且,所有部件都是固化的簡化設計,唯一可以擴展的就是節點的數量。

層次架構如下:

這個架構圖質量不高,當然,文檔也語焉不詳

因為神威·太湖之光的節點是固化不可擴展的,所以,其互聯架構大概是最重要的但也是最語焉不詳的部分,文檔中粗略描述了系統的三個網路層次,但在圖上,Storage Network並沒有線條指示它們連接到哪裡,並且,文檔中有兩處地方提到了使用的互聯技術:一處寫用的是PCI Express,一處描述了使用了Mellanox提供的HCA(Host Channel Adapter,主機通道適配器),然而Mellanox並不生產PCI Express交換機,它生產的是InfiniBand互聯設備(同時,也能當作Ethernet設備使用)。根據我們最合理的猜測,它們都有用到,也就是,混用了PCI Express Fabric和InfiniBand Fabric:

在每個Supernode超級節點內使用的是PCI Express Fabric,之所以特地提到Fabric,是因為PCI Express傳統上只是一種「Connect」(連接能力)而不是「Fabric」(網路架構),因為其缺乏主機外連接能力,以及多主機互聯的機制。傳統上,超級計算機使用的是InfiniBand,也有少量使用RDMA Ethernet的類型,它們都能提供Fabric的能力。

PCI Express具有比較有限的多機互聯能力,例如存儲控制器中通常會用到PCI Express的NTB(Non-Transparent Brdiging,非透明橋)進行Active-Active高可用配置,這時,NTB將橋接兩台主機的內存區域,並通過DMA進行數據傳輸,原則上,它和RDMA(Remote DMA,遠程DMA)有些類似,困難來自於大規模的核心交換,原因在於一般的PCI Express DMA使用的是內存地址,導致其交換、路由不如InfiniBand和Ethernet簡便。另一個問題在於PCI Express的交換機埠和帶寬都受限制,目前,業界最先進的PCI Express交換機晶元具有96個可用PCIe Lanes,可以配置為最多48個埠,但此時每個埠僅為PCI Express 3.0 x2,也就是單向2GiB/s。顯然,對於超級計算機來說,使用x8甚至x16的PCI Express埠是必須的,此時單個PCI Express交換晶元提供的交換埠僅為6到12,遠小於InfiniBand和Ethernet。對於神威·太湖之光而言,由於CPU僅提供PCI Express 3.0 x8,因此對應每個PCI Express交換機晶元埠數量大概應該是12,因此,對應的一個比較合理的猜測是每一塊具有8個節點的節點插板上部署一個PCI Express交換機晶元,然後在每一個機柜上進行類似ToR(Top of Rack,機架頂)的進一步級聯。

PCI Express Fabric需要使用大量的設備,文檔中提及太湖之光的「network diameter」是7,也就是至少也是8層設備級聯,PCI Express Fabric應該部署在靠近計算節點的位置

總體而言,要想使用PCI Express建立大規模的Fabric是可能的,PCI Express使用內存地址進行數據交換可以通過一些交換機具有的ID Routing特性來解決,而埠數量則只能靠使用大量的設備級聯。某種意義上,市場上確實有可用的PCI Express Fabric方案,但會需要使用到大量的PCI Express交換機,相對這些困難而言,通過使用光纖或者主動銅纜解決PCI Express信號距離的問題完全不值一提。

唯一確定提到PCI Express互聯的地方,後面提及的Sunway Network增加了這個說法的可信度,因為如果沒有用PCI Express Fabric而全部使用InfiniBand的話,就沒必要起個新名字,至少原則上如此

難度在於文檔中幾乎完全沒有提及PCI Express Fabric的信息,包括廠商、規格、數量,等等等等。除此之外,由於Mellanox並沒有PCI Express Fabric相關設備,因此,很可能在Storage Network上使用了Mellanox的InfiniBand方案,Mellanox的HCA卡也提供了Ethernet模式操作(以及聽起來很怪但實際使用也不少的IPoIB——IP over InfiniBand模式)的能力,但我們認為,如果採用的話,應該就是InfiniBand模式。至於Central Switch Network,可能是PCI Express,也可能是InfiniBand,但在後面我們可以看到,它應該是InfiniBand。

在確定了每個節點的對外互聯帶寬為PCI Express 3.0 x8理論上的雙向16GiB/s最後,我們可以算出神威·太湖之光的40,960個節點的總帶寬應該是480TiB/s,與文檔中的「70TB/s」帶寬相差較遠,因此這個帶寬指的應該不是PCI Express Fabric,而應該是採用了InfiniBand的Central Switch Network,但此時並不清楚「70TB/s」的數字中是否包括了存儲網路。70TB/s = 560Tb/s = 560,000Gb/s,假如對應160個Supermode,每個則是3500Gb/s,也就是說,每個Supernode的實際InfiniBand雙向帶寬是不高於3500Gb/s,單向帶寬不高於1750Gb/s,按照筆者的猜測,有可能是採用了10塊雙埠100Gb/s的Mellanox ConnectX-4 InfiniBand HCA,分散連接於每個Supernode的多個PCI Express交換機晶元上。

圖中提到了太湖之光在Supernodes之間使用了InfiniBand做Interconnect,這應該是肯定了我們的猜想

綜上所述,神威·太湖之光的網路架構為PCI Express與InfiniBand混合:在256個節點組成的Supernode內部使用的是PCI Express Fabric,規格應該是PCI Express 3.0 x8,理論單向帶寬8GiB/s,理論雙向帶寬16GiB/s;而在160個Supernode之間,使用的則是InfiniBand,速率規格應該是100Gb/s。外部存儲網路也通過InfiniBand與中央網路連接。從搭配了Linux操作系統來看,它仍然屬於多計算機組合而成的計算機集群系統,在每個節點上都需要運行一個OS,不同的節點OS之間通過MPI(MPI是一種並行計算中常用的消息通信API/機制)進行通信。

P03:神威·太湖之光:浮點運算性能與實際測試

總之,就我們來看,神威·太湖之光現在的設計思想仍然是先驅者性質,要在實際應用中取得好表現是極具挑戰的。


從左到右:ORNL Titan、NUDT Tianhe-2(天河二號)、Sunway TaihuLight(神威·太湖之光)

Intel KNC、Intel KNL、SW26010,希望未來能有機會觀察下Intel KNL

HPL測試:太湖之光:93PFLOPS,效率74%,可以看到天河2號的62%有點低(這應該是由於Intel KNC的原因),而後面的K Computer(93%)和BlueGene/Q(85%)的效率卻是驚人,其中,K Computer使用的是Tofu互聯,BlueGene/Q是定製互聯

顯然,實際的應用程序不可能只是求解N元一次稠密線性代數方程組,目前,一個新興的測試標準是HPCG(High Performance Conjugate Gradient,高性能共軛梯度),共軛梯度演算法是一個用於求解線性方程組的迭代演算法,HPCG測試使用到了目前高性能計算中常見的計算和通信模式,目測可以更好地表達高性能計算機系統的性能。推動HPCG測試的Jack Dongarra既是LINPACK標準的創始人,又是HPCG標準的創始人之一,他在負責全球超級計算機TOP500排名工作的同時也撰寫了《Report on the Sunway TaihuLight System》(也就是本文的資料來源之一)。

HPCG性能TOP10

一個大問題在於,一切的軟體都要為獨有指令集環境進行重新開發、編譯、調試,乃至——優化

最後的最後還有幾個有趣的數字,這裡一併給出:神威·太湖之光(Sunway TaihuLight)的造價大概是18億人民幣,約合2.7億美元,並由中央、江蘇省、無錫市分攤,造價包括了硬體、搭建、研發以及軟體。運維成本沒有包括在內。


Jack Dongarra,《Report on the Sunway TaihuLight System》

Jack Dongarra,《Toward a New Metric for Ranking High Performance Computing System》

Jason Sewall,《Preparing for a smooth landing: Intel"s Knights Landing and Modern Applications》

Ravi Budruk,Don Anderson,Tom Shanley,《PCI Express System Architecture》

Akber Kazmi,《PCI Express Basics & Applications in Communication Systems》

盤駿/Lucifer ,《Intel Ivy Bridge-EP處理器評測》,http://solution.zdnet.com.cn/2013/1125/2996552.shtml

盤駿/Lucifer ,《Intel Haswell-EP處理器評測》,http://solution.zdnet.com.cn/2014/0909/3032770.shtml

如果你覺得文章還有點幫助:

微評測是科學與技術的觀察者

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 微評測 的精彩文章:

TAG:微評測 |