偶然當程序員卻拿下圖靈獎,超算榜單之父講述人生開掛經歷_風聞
量子位-量子位官方账号-2022-12-10 21:16
衡宇 發自 凹非寺
量子位 | 公眾號 QbitAI
40年前偶然走上程序員道路的Jack Dongarra,是今年的圖靈獎得主。
獎項設立機構美國計算機協會(ACM)表示,Dongarra的算法與軟件成果推動了高性能計算(HPC)的發展。
正是他在數值算法和庫上的開創性貢獻,使得過去40年裏,高性能計算軟件追上了指數級硬件發展的節奏。

這位老爺子,還弄出了個TOP500的超算排行榜,每年兩次幫超算跑跑分啥的。
剛剛,今年71歲的老爺子還參加了中國計算機學會舉辦的CNCC 2022,做了次特邀報告演講。
演講的主題,也與高性能計算息息相關。
為什麼人類需要超算?
高性能計算 ,是指通過聚合計算能力來提供比傳統計算機和服務器更強大的計算性能。
再通俗點來講,就是用超級計算機來並行處理複雜問題。
為什麼要用上超算?Jack Dongarra舉了個例子。
他提到,科學和工程都通過理論和實驗來推進,但兩者常常遭遇限制,尤其是實驗部分。
會遭遇的“攔路虎”非常多,有可能是製造儀器很難搞,有可能是所觀察的事物發展太過迅猛,又或者是沒有辦法在實驗室裏完成實驗。
比如,假設有兩個星系會發生碰撞,這個過程會是什麼?

與其只靠漫長的觀測,不如在計算機上進行仿真模擬。
計算科學增強着當下的種種理論和實驗,最快的超級計算機能為仿真模擬提供非常好的保真度和準確性,更重要的是,超算能夠覆蓋和支持仿真模擬過程中巨大的計算量。
這就不得不提到超算的結構。
超算由一堆CPU、GPU等異構芯片提供算力。
此外,它擁有一個高度並行的系統和分佈式內存。為超算編程時,會用到MPI(用於編寫並行計算機的跨語言通訊協議),以及用於共享內存並行系統的多線程程序設計方案OpenMP。
美國橡樹嶺國家實驗室的超級計算機Frontier取得了斐然的成績:在2022年第59屆國際超算Top500名單中位居榜首。
Frontier大約有800萬個核,9408個節點,它在負載下的電力是21兆瓦。
Jack Dongarra打了個頑皮的比方。
他説,在美國,如果他家用掉1兆瓦的電力,一年得給電力公司繳納100萬美元的電費。
也就是説,單是電費,Frontier一年就要花掉2100萬美元呢!

Frontier的最高性能是每秒2x1018次浮點運算。
這是一個難以置信的計算量。如果現在全球所有人停下手裏的工作,開始每秒做一次計算,晝夜不停、不眠不休地計算四年,才能達到1018次浮點運算。然而,這樣龐大的運算量,超算一秒就能完成。
除了計算,超算還涉及異構數據在不同芯片間的搬運,Jack Dongarra稱之為移動數據(data moving)
Jack Dongarra指出,現在的超算對已經對浮點運算做了大量優化,移動數據的成本已經比計算成本還高。
降低移動數據的成本,將成為未來重點的研究方向。
此外,AI for Science已經在很多科學領域發揮重要作用,譬如DeepMind旗下的Alpha系列,如Alpha Zero、AlphaStar、AlphaTensor……

今年推出的Alphafold2,其蛋白質結構數據庫揭開了蛋白質宇宙,有人因此戲稱“結構生物學家要失業了”。
超算的另一個發展方向,就是更適合做AI計算。
AI有很多方面,有ML、NLP、專家系統、CV、語音、機器人等。
Jack Dongarra給出了超算適合做AI計算的理由。
首先,互聯網上存在的大量數據,可以用來訓練和建立ML算法,與此同時,因為提升洞察力,ML已經成為了解決問題時所要考慮的“基礎設施”之一。
而關於用來做ML計算內核的GPU,人類也對其背後的算法和理論有了更深度的瞭解。
ML的核心是矩陣,線性代數在其中扮演着重要的角色。
“8位浮點(FP8)精度很適用於訓練神經網絡的硬件。”
Jack Dongarra對此進行了進一步解釋:
相比於16位、32位的浮點精度,較低的精度正是ML所需要的。
這就是為什麼現在更多的計算機被設計用來專門解決ML的問題。
他還提到,未來的超算或許會擁有更多的加速器,它們可以用來進行ML、神經神態計算、量子計算、光學計算等。
“從標量到向量,從向量到分佈式內存,從分佈式內存到加速計算,再到使用混合精度來進行計算。”Jack Dongarra總結道,“我得出結論,這裏有三場計算機革命。”

意外走上漫漫超算路
拿下圖靈獎的Jack Dongarra並非一開始就以當程序員為己任,一切都是“意外”。
高中畢業後,他選擇進入芝加哥州立大學就讀——這所學校類似於地方性的師範學校,為芝加哥公立學校系統培養了不少教師。
大三、大四時,Jack Dongarra福至心靈地“醒悟”,發現自己並不想教書。
幾經周折,他申請了阿貢國家實驗室的本科生職位。在那裏,他有機會和真正的科學家一起做一些實際工作,並獲取課程學分。
於是,就讀於芝加哥州立大學的最後一個學期,Jack Dongarra在阿貢國家實驗室度過了16周左右的時間。

****△1980年Dongarra在阿貢國家實驗室
在阿貢國家實驗室的這段經歷,促使他決心轉攻計算機。
本科畢業之後,先在在伊利諾伊理工學院拿到CS碩士學位,又進入新墨西哥大學繼續深造。
這裏有一張1979年拍攝的照片,左數第二個年輕小夥就是Jack Dongarra本人。
那個時候,作為新墨西哥大學研究生的他,頭髮還很茂盛(他自己説的)。

圖上四人搞了個小組,開發了一個叫LINPACK的項目,為此,Jack Dongarra還給自己心愛的車車掛上了同名車牌。
具體來説,LINPACK是一套求解線性方程組的數學軟件。
沒錯,那個時候小帥哥本人真正醉心的還是線性代數領域。
他曾這樣描述自己40年來成為程序員的動力:
我主攻的是數學方面的研究,尤其是數值線性代數方面,我所有的工作都源於此。
對那些需要解線性方程組的學科來説,一款能計算答案的軟件無疑是非常重要的。
同時,你還必須確保軟件運行與機器架構相一致,這樣才能真正獲得機器所能達到的高性能。
1993年,Jack Dongarra加入了TOP500排行榜團隊,成為了TOP500第一個測試版本的爸爸之一。
同年6月,正式版本開始發佈,其所所使用的評選標準被稱為LINPACK。
自那時起,TOP500排行榜半年發佈一次,告訴大家世界最強大的計算設備都在哪裏。

這一舉措解決了科學家們無法就衡量超級計算機進展的標準達成一致的問題。
負責監督美國能源部“百百億次計算”項目的Paul Messina就表示:
“如果你不能測量它,你就不知道它是什麼”,這就是為什麼傑克的工作很重要。
現在,TOP500已經成為衡量超算能力的權威標準。
而排名第一的計算速度,也以摩爾定律描述的節奏穩步增長,大約每14個月就會翻倍。
天河一號,是中國第一台登上榜首 (2010年11月) 的超級計算機,它在榜首呆了六個月時間。
上月中旬,美國達拉斯舉行的 SC22 會議上,第60期TOP500排行榜結果公佈,排名第一的依舊是上次奪魁的Frontier。

中國的兩台超算,神威太湖之光和天河2號,分別拿下了排行榜第7和第10位。
統計所有上榜TOP500的超算,中國共佔據162台,雖較去年的173台有所下降,但仍以領先美國36台的優勢,穩居世界第一的寶座。
在算力方面,美國在已部署的算力中以43.2%排名第一,中國以10.6%位列第四。
Jack Dongarra拿出了一組十分直觀的數據。
現在的計算機,最快每秒是1.1 exaflops,TOP500的最後一名則是1.73 petaflops。
而Jack Dongarra的筆電是擁有M2處理器的MacBook,它的運行速度是426 gigaflops。
近30年前,第一代TOP500的榜首,屬於洛斯阿拉莫斯國家實驗室(LANL)用來設計核武器的計算機CM.5,它擁有一千個處理器,運行速度大約是60 gigaflops。
不用説當年的第一和今日的第一如何如何,今天家用筆電的運行速度,已經遠遠超過了30年前的世界最快。
好了,最後還是説回老爺子。

年逾七十的他,至今依然活躍在高性能計算領域的一線,今年更是奪得“計算機界的諾貝爾獎”圖靈獎,其中,LINPACK,正是他拿圖靈獎的獲獎工作之一。
ACM總裁Gabriele Kotsis表示,Jack Dongarra是高性能計算社區中,最重要且積極參與的領導者之一。
超算的新benchmark
也是這位積極的領導者提出,超算需要新的基準測試了!
背後原因不難理解——
LINPACK基準測試強調浮點運算,它的核心是矩陣乘法。
多年以前,團隊設計LINPACK時,浮點運算還是一個很重要的衡量標準。
今時今日,浮點計算已經不那麼重要了。
放眼望去,所有的超算都為浮點計算做了“過量”的準備——Jack Dongarra本人是如此評判的。
是以,他認為當務之急是需要有新的基準來關心移動數據,也就是HPCG。

簡單介紹,HPCG一個共軛梯度算法,它着眼於解決稀疏矩陣問題,而不是密集矩陣。
這恰恰滿足了今時今日在實際應用中存在的問題。
相比於舊的基準HPL,HPCG能更好地反映應用程序的效果,但它給出的執行速度的數字會低很多。
究其背後的原因,是隨着GPU的增強,計算機已經可以非常迅速地進行浮點運算,所以HPL得出的數據,其實是超算潛力被誇大後的結果。
相對應地,HPCG強調不是浮點數而是移動數據,這正是帶寬和延遲會限制超算性能的地方。
就拿日本超算富嶽(Fugaku)來説吧。
LINPACK基準測試中,富嶽排名第一,達到了理論峯值的3%;而運行新基準,富嶽只得到了理論峯值的0.8%。
這意味着計算機並沒有發揮出它們的潛在性能,需要更仔細地進行研究。

有趣的一點是,TOP500超算榜上,幾乎97%都在使用x86這種架構,只有5台超算使用ARM處理器。
以及,這500台超算沒有任何一個使用了RISC-V。
“雖然今天它給高性能計算帶來的影響很小,但也許在未來,我們可以看到RISC-V對它的影響。”Jack Dongarra説。
One More Thing
有些俗套的,在CNCC進行特邀報告演講後,Jack Dongarra被問及“有沒有經驗可以介紹給年輕人”。
他的回答大約可以總結為以下三點:
追隨激情,做你感興趣的事情。
把目標定得高一點,同時做好失敗的準備。
多和別人互動,或許會獲取靈感也説不定吼~