40 年前偶然走上程序員道路的 Jack Dongarra,是今年的圖靈獎得主。獎項設立機構美國計算機協會(ACM)表示,Dongarra 的算法與軟件成果推動了高性能計算(HPC)的發展。正是他在數今天冷依柔要和大家分享的是偶然當程序員卻拿下圖靈獎,超算榜單之父講述人生開挂經曆,歡迎閱讀~
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 被問及 " 有沒有經驗可以介紹給年輕人 "。
他的回答大約可以總結為以下三點:
追随激情,做你感興趣的事情。
把目标定得高一點,同時做好失敗的準備。
多和别人互動,或許會獲取靈感也說不定吼~
關于偶然當程序員卻拿下圖靈獎,超算榜單之父講述人生開挂經曆就介紹完了,您有什麼想法可以聯系冷依柔。