C++無法滿足超算編程需求,斯坦福研發專用語言Regent
【新智元導讀】斯坦福大學開發出一種用於編程超級計算機的新語言Regent。用戶可以先編程計算任務,然後再定位數據,非常容易,而且無需重新編寫代碼。科學家希望創建一個不需要每個研究人員成為計算機科學家的編程環境。
最前沿科學領域的巨大挑戰只有超級計算機能夠應對,但這些機器的難度卻成了前進的阻礙。
幾十年前,計算機成本高昂,複雜且罕見。但是PC革命改變了這一點,為大多數人提供了更小、更快、更容易使用、更易於獲取且更便宜的計算機,科學家們因此受益匪淺。他們開發了計算機技術來研究細胞的內部運作、遙遠恆星的行星軌道、以及遠遠超出其觀察能力的其他現象。
但對於處於最前沿的研究人員來說,新式複雜的儀器開始產生越來越多的數據,需要用到超級計算機來分析實驗結果。給這些硬體編程所需軟體太複雜了,另試圖分析這些龐大數據集的科學家們常常難以掌握。
不過好消息來了。Regent,一門由斯坦福大學計算機科學家Alex Aiken領導的小組開發的新編程語言,將使得超級計算機編程更易於使用。
「我們希望創建一個不需要每個研究人員成為計算機科學家的編程環境,」阿爾卡特朗訊通信和網路教授,粒子物理學和天體物理學以及光子科學教授Aiken說。
Regent有助於解決超級計算領域面臨的最大挑戰。超級計算機比以往任何時候都複雜得多,當前的編程語言一直在努力跟上步伐。提到超級計算機,大眾的腦海中可能會浮現出一台類似黑客帝國Matrix的巨型機器,但它實際上是由數千個微處理器組成的數組。
科學家通常使用C++對這些陣列進行編程。C++是40年前的一種編程語言,在當時那個年代,主要的微處理器是中央處理單元即CPU。CPU可以快速的解決問題,一個接一個地計算,程序員稱之為串列方式。
但是現在,第二種類型的微處理器對於超級計算變得重要,即圖形處理單元或GPU。一開始是為了玩電腦遊戲時,控制屏幕上無可計數的像素點,可以執行並行計算。
事實證明,並行處理在機器學習等應用中非常有用。C++已經升級,以跟上這波硬體的變化。不幸的是,補丁的增加使語言越來越難以使用。而Regent能夠讓超級計算機的程序員更容易做一些事情,比如將串列處理任務分配給CPU,將並行處理任務分配給GPU。
一旦Regent在概念層面上構建了程序,程序員的意圖就會被編譯成一個名為Legion的第二個軟體層。
Legion生成機器代碼,用來指導超級計算機硬體如何執行程序的精確指令。Regent和Legion之間的緊密集成使程序員更容易做出其他重要決定; 值得注意的是,存儲超級計算機必須分析的數據的位置。
Elliott Slaughter是SLAC國家加速器實驗室的科學家,他幾乎從一開始就在Regent和Legion工作過,他表示兩層之間的整合可以節省程序員的金錢和時間。計算機消耗能源,這需要成本,移動數據的成本可能是對該數據執行計算的成本的100倍。
此外,大型實驗通常依賴於收集大量數據的儀器。Slaughter表示,一些儀器可以每秒收集相當於20個DVD的數據,用於持續15分鐘的實驗。即使以光速在光纖上移動,從儀器到超級計算機獲取大量數據也可能產生滯後,這可能會破壞分析。
「把數據存儲在什麼地方,是程序員需要做出的重要抉擇,」Slaughter說。Regent和Legion通過為程序員提供前所未有的控制權來節省金錢和時間,以便在等待計算時存儲數據。
「你可以先執行計算任務,然後在不重寫代碼的情況下輕鬆定位數據,」他說。
Regent會流行嗎?研究人員表示,新語言必須克服大量的慣性。「這是一種非常不同的編程方式,」Aiken說。「研究人員需要一段時間才能採用所需的思維模式。」
但有兩個因素對它有利。首先,超級計算硬體的繼續改進。美國能源部正在推動其Exascale計算項目的發展,該項目的目標是在2021年左右實現超級計算能力的50倍增長。能源部正在支持軟體項目,包括Regent,以幫助編程保持同步。
此外,許多想要使用超級計算機的科學家不熟悉當前的工具,並對編寫大型實驗所需的陡峭學習曲線持懷疑態度。即使是經驗豐富的超級計算機程序員也可能會發現當前系統很麻煩,並想知道是否有更好的方法。Aiken說:「我們經常與那些意識到Regent為他們生活更輕鬆的科學家交談。」
參考鏈接:
https://engineering.stanford.edu/magazine/article/new-more-user-friendly-language-programming-supercomputers
※15歲中國學生斬獲蘋果WWDC獎學金:寫代碼只用了2個周末
※GAN零基礎入門:從偽造視頻到生成假臉
TAG:新智元 |