有人硬要給中國超算找個「美國爹」,殊不知這「爹」已掛了18年

文章推薦指數: 80 %
投票人數:10人

日前,「神威太湖之光」取代「天河二號」登上全球超級計算機500強榜單之首,就在國人為此而自豪和驕傲之時,一些不和諧的音符也隨之而來——有人認為「神威太湖之光」勞民傷財是形象工程;有人認為,「中國的超算硬體硬,軟體卻很軟,跟不上要求,像天河超算的資源就大量閒置,將來神威也會一樣閒置」;還有人認為申威26010存在設計缺陷,或忙著給申威26010「找爹」......

但事實上,這些對「神威太湖之光」的抨擊,本質上和當年「天河二號」榮登全球超級計算機500強榜單第一位之時,一些社會輿論攻擊「天河二號」因使用美國Intel的CPU,是組裝貨,進而不具備技術含量如出一轍。

文︱瞭望智庫特約科技觀察員鐵流 (微信公眾號:tieliu1988)

本文為瞭望智庫特約文章,如需轉載請在文前註明來源瞭望智庫(zhczyj)及作者信息,否則將嚴格追究法律責任

1

所謂「軟體軟」造成超算閒置是偽命題

超算所運行的軟體可以分為系統軟體、基礎軟體和應用軟體。

像系統軟體(包括作業系統,集群管理調度系統等),HPC基礎軟體(並行環境,數學函數庫等),這些軟體以開源軟體為主,由於開源軟體性能相對偏低,需要針對國產機器特點進行定製開發和優化,所以國內超算大多數是以開源軟體進行定製,比如天河超算的作業系統就是Linux的定製版本,2012年投入運行的神威藍光超算採用的是神威睿思作業系統,神威睿思作業系統其實也是Linux的定製版本。

至於開源軟體中,中國程式設計師的代碼貢獻比例,那就是另外一個話題了,筆者在《9座大山壓著,這個關乎國家安全的命脈一直被別人抓在手裡》一文中已有詳細闡述,本文不再複述。

而應用軟體中,既有開源軟體,比如用於量子力學的Quantum ESPRESSO、Octopus、ABINIT、CP2K,用於分子動力學的ESPResSOmd、LAMMPS,用於離散格子玻爾茲曼方法的OpenLB......也有商業軟體,比如計算流體力學的ANSYS Fluent、ANSYS CFX、Xflow,用於模擬安全碰撞、跌落的LS-DYNA、MSC Nastran (SOL700)、Radioss......

在形形色色的應用軟體中,工程仿真領域以商業軟體多,而且這當中大多是國外軟體,這些國外軟體不僅價格特別昂貴,而且並行規模受限,有些模塊國外是禁運的,有些可以用於軍工的軟體也嚴禁出售給中國。

筆者做一個總結,中國超算的系統軟體、基礎軟體大多基於開源軟體定製,因為是開源軟體,而且國內科研單位還進行了修改,完全滿足超算的使用需求,也就不存在因為軟體水平落後而導致超算閒置的問題。

而在應用軟體方面,雖然很多商業軟體被國外壟斷,而且價格昂貴,確實影響了中國超算的應用,但卻並非無軟體可用。

實際上,造成超算計算資源閒置的主要原因是全機計算比較少,鮮有一個大應用占全部資源的情況,以及國家沒有給足夠運行經費,因而收費貴,很多用戶用不起。

2

天河超算資源閒置與客觀事實不符

目前,無論是「天河一號」還是「天河二號」都不存在運算資源閒置的問題——早在2016年1月,新華社就報導過《中國超級計算機「天河一號」滿負荷運行》,文章中稱,「天河一號」目前已經處於一個滿負荷,甚至是超負荷運行的狀態,每天在線運行任務超過1400多項,這是歐美國家級超算中心都很難達到的一個業務規模......截至目前,天津超算中心已經給全國100多家重要企業提供服務或是形成了深入的合作,階段性地實現節省企業研發投入上億元,為企業帶來相關經濟效益超過20億元。

不僅「天河一號」處於滿負荷狀態,「天河二號」的大規模計算資源也不容易申請,必須排隊,就連國防科大自己想測試下節點都經常沒資源,所謂「天河二號」上利用效率不高也是相對於曾經規劃的目的而言的——在原本的計劃中,希望將更多的諸如核物理、流體力學等代表超算頂尖水平重大科研課題放在「天河二號」上,但後來在實踐中,這個比例比原本計劃的低;像金融分析、動漫渲染這類門檻相對偏低的應用,並行度高,很容易占用大量計算資源,因而在計劃中沒有被看得「比較輕」,沒有被列入計劃所希望的應用列表中。

另外,就客觀規律而言,超算使用率是不可能達到100%的——跑計算密集型計算網絡會有利用不充分的情況,跑通訊密集型計算處理器也會利用不充分,然後大量計算因為處理問題的特點不能做到負載均衡,加上超算上大多同時跑非常多任務,所以整體來看總是有計算資源空著,雖然在旁觀者看來計算資源沒有跑滿,但其實寫代碼的人已經在恨計算資源不夠了——這也解釋了為什麼明明現有超算的計算資源沒有跑滿,全世界卻都在追求性能更強的超算。

3

真正的要害在於編譯器和接口

在PC領域,軟體生態對自主CPU的商業化推廣造成了很大的障礙——龍芯跑不了Windows,和現有的Witnel體系不兼容,因而被扼制。

但有些人卻將PC領域的情況套用到超算中,認為「神威太湖之光」超算採用了自主眾核晶片申威26010就會像龍芯在PC領域一樣遭遇生態問題,這其實完全是外行人的杞人憂天——由於「神威太湖之光」建設單位的特殊背景,「神威太湖之光」的主要應用方向基本上是應對特殊領域,而在這些特殊領域,相關的軟體代碼基本上都是自主開發的,且很多代碼都是針對申威進行專門的優化。

而且在軟體上,編譯器加速庫等生態系統一應俱全,因此,根本不可能遭遇龍芯在PC領域碰到的軟體生態難題。

誠然,在民用應用方面,比如金融分析、動漫渲染之類低層次應用,「神威太湖之光」如果要跑這些應用,代碼確實要重寫或者修改,但對於超算用戶來說,其實難度並不大,很多用戶自己就能搞定——超算中心只要提供編譯器、MPI、任務管理系統、登錄系統、文件管理系統就足夠了。

對於大超算而言,任務管理系統,登錄系統,文件管理系統可能要自己定製,甚至是自主開發,不過這些難度並不算大,比如天河二號就是用的自主的MPI和文件系統。

很多用戶只用超算上原配的GCC、MPI、SSH、PBS,如果要用別的軟體,需要用什麼,用戶自己安裝什麼,甚至是自己編寫,並不需要超算建設和運營者自己勞心費力——只要有了MPI、openmp、cuda和openacc等接口和編譯器,科研人員和超算用戶可以根據機器的手冊編好代碼——既可以自己從零開始編寫,也可以在通用代碼包的基礎上修改,大部分情況下沒問題。

除非遇到存在非定義行為的情況,或是有彙編優化的情況,以及編譯不規範的情況——有些新手編程不規範,同樣的代碼在不同編譯器下會跑出不同結果,使用SWCC編譯器得出一個結果,使用GCC編譯器得出另一個結果......遇到這種情況只能怪程式設計師代碼寫得不規範了。

總而言之,超算只提供基本的計算環境,只需提供編譯器和並行接口就滿足幾乎所有超算應用的需要了——因為並行接口是開放的,大家都是用的統一標準,所以根本就沒有軟體落後這一說法,所謂軟體落後而導致超算計算資源閒置更是無從談起。

4

天河超算曾經遭遇軟體問題的根源

當今超算的計算節點要麼採用CPU+加速器的方式,要麼完全採用相同的CPU。

採用CPU+加速器的方式,被稱為異構計算。

舉例來說,以美國泰坦和中國天河2號為例,泰坦有18688個運算節點,每個運算節點由1個16核心AMD Opteron 6274處理器和1個NVIDIA Tesla K20加速器組成,共計299008個運算核心;天河2號有16000個計算節點,每個節點由2片Intel的E5 2692和3片Xeon PHI組成,共使用了32000片Intel的E5 2692和48000片Xeon PHI;天河1A使用了14336片Intel Xeon X5670處理器和7168片NVIDIA Tesla M2050高性能計算卡。

這些超算的計算節點都採用了CPU+加速器的方式,因而都是採用異構計算超算的典型代表。

而完全使用同一塊CPU則被稱為同構計算。

比如,日本超算「京」只採用了富士通製造的SPARC64 VIIIfx處理器,神威藍光只採用了8704片申威1600,IBM的Mira和Sequoia,就只採用了PowerPC A2處理器,這些都沒有採用GPU或眾核晶片等加速器。

由於在過去,超算大多採用同構計算,因此所有代碼都是根據同構計算編寫的,而近年來,由於採用異構計算可以獲得非常高的性能和性能功耗比,越來越多的超算採用了異構計算方案,這使得過去曾經能用於同構計算的代碼無法在採用異構計算的超算上穩定運行,所有代碼都必須修改甚至重寫(同構超算跑openmp,異構超算跑cuda和openacc),而在「天河一號」、「天河二號」降生之初,就遭遇這個問題,但隨著時間的流逝,越來越多的代碼完成了移植,天河超算曾經遭遇的軟體問題自然迎刃而解。

5

內存偏小並非申威26010的設計缺陷

上文提到過採用CPU+加速器的方式為異構計算,只採用一種CPU則為同構計算。

但申威26010則顯得比較特殊,如果用相同類型指令集和體系架構的計算單元組成系統的計算方式來定義同構計算,那麼,由於神威太湖之光只採用了申威26010,而且運算核心和管理核心的指令集都相同,也許會被認為是同構計算。

但實際上,神威太湖之光雙精浮點峰值高達125PFlops,穩定性能為93PFlops,確實是採用加速器才取得的高性能——本質上,申威26010是將CPU和加速器合二為一——申威26010的260個核心分為2種,一種是管理核心,發揮類似CPU的功能,另一種是運算核心,發揮類似加速器的作用,這就使申威26010單晶片能夠完成Intel E5+PHI,或Power+Tesla兩款產品的功能。

而且相對於Intel E5+PHI,或Power+Tesla,申威26010能夠實現共享內存,這就避免了Intel E5+PHI,或Power+Tesla必須面對的顯式拷貝,從而降低了對內存的壓力,並減小了性能損失。

想必也是如此,申威26010的緩存和內存都顯得偏小,因為訪存模型可能非常單純——等於是放棄現有cpu的複雜內存管理模型,把內存調度的任務完全交給開發者,只在CPU支持一個最簡單的訪存模型,在硬體上沒有cache的硬體一致性要求(Intel KNL將Cache一致性交由硬體負責),將同步的工作交給軟體。

這種異乎尋常的設計使得申威26010在擁有高性能和低功耗的同時,彌補了自身在內存上的短板。

6

不要給申威「找爹」

神威太湖之光使用了上海高性能集成電路設計中心設計的國產眾核晶片申威26010,該眾核晶片主頻1.45G,擁有260個核心,雙精浮點峰值高達3.06TFlops,在雙精浮點上完全追平了Intel最好的超算晶片。

正是得益於國產眾核晶片申威26010的強悍性能,加上良好的體系結構設計以及網際網路等核心部件,使超算擁有異乎尋常性能指標。

每當中國取得技術突破之時,網絡上總會冒出一群「找爹黨」,本次神威太湖之光超算刷榜也不例外——一些人聲稱申威26010使用了ARM指令集,一些人將申威26010與 DEC的Alpha聯繫起來,並將其「認爹」。

就事論事來說,申威和ARM完全沒有任何關係,在中國獲得ARM指令集授權的只有華為海思和國防科大。

不過,申威與Alpha卻有一定淵源,但血緣關係非常淡薄,稀薄到可以忽略不計,和DEC當年的Alpha已經完全是兩回事了(畢竟DEC被康柏收購已經快18年了),有人稱之為類Alpha自主指令集,筆者聯繫過申威的科研人員,他明確表示是自主研發的申威-64自主指令集,相關單位也明確表示與DEC的Alpha無關。

請廣大網友不要給申威「找爹」,何況這個「爹」已經掛了18年了。

7

超算性能永遠不會過剩

在CPU、作業系統、網際網路等核心部件全名自主化後,一些人以「超算性能過剩論」來指責神威太湖之光超算性能過剩,是面子工程,根本無用。

對於「超算性能過剩論」,筆者認為,對性能的追求是永遠不會停止的,計算用的代碼是可以修改計算精度的,如果有更好的計算條件用戶自然會提高網格密度或粒子數目,稍加修改就使計算精度提高了,高的精度可以用來解決更深一層的問題。

所以做性能多高的超算都不會性能過剩,做超算從沒有夠用的說法。

正如奧林匹克格言「更快、更高、更強」,超算同樣只有不斷追求更快。


請為這篇文章評分?


相關文章 

「神威·太湖之光」背後的功臣

6月20日,德國法蘭克福國際超算大會(ISC)公布了新一期全球超級計算機TOP500榜單,由國家並行計算機工程技術研究中心研製的「神威·太湖之光」以超第二名近三倍的運算速度奪得第一。這兩天,神威...