麻省理工學院為高性能計算機開發新的程式語言

2022-02-15     科技大咖控

原標題:麻省理工學院為高性能計算機開發新的程式語言

越來越多的任務需要高性能計算——例如圖像處理或神經網絡上的各種深度學習應用程式——在這些任務中,人們必須處理大量數據,並且速度相當快,否則可能會很荒謬時間。人們普遍認為,在執行此類操作時,在速度和可靠性之間存在不可避免的權衡。根據這種觀點,如果速度是重中之重,那麼可靠性可能會受到影響,反之亦然。

然而,主要位於麻省理工學院的一組研究人員對這一概念提出了質疑,聲稱事實上,一個人可以擁有一切。麻省理工學院計算機科學與人工智慧實驗室 (CSAIL) 的二年級博士生 Amanda Liu 說,使用他們專門為高性能計算編寫的新程式語言,「速度和正確性不必競爭. 相反,他們可以在我們編寫的程序中攜手並進。」

Liu 與加州大學伯克利分校博士後 Gilbert Louis Bernstein、麻省理工學院副教授 Adam Chlipala 和麻省理工學院助理教授 Jonathan Ragan-Kelley 一起描述了他們最近開發的「張量語言」(ATL)的潛力,上個月在費城程式語言原則會議。

「我們語言中的一切,」劉說,「都是為了產生一個數字或一個張量。」 反過來,張量是向量和矩陣的泛化。向量是一維對象(通常由單獨的箭頭表示),矩陣是熟悉的二維數字數組,而張量是n維數組,例如可以採用 3x3x3 數組的形式,或者更高的形式(或更低)尺寸。

計算機算法或程序的全部意義在於啟動特定的計算。但是可以有許多不同的方式來編寫這個程序——正如 Liu 和她的合著者在他們即將發表的會議論文中所寫的那樣,「各種不同的代碼實現令人眼花繚亂」——有些方式比其他方式快得多。她解釋說,ATL 背後的主要理由是:「鑒於高性能計算非常耗費資源,您希望能夠將程序修改或重寫為最佳形式以加快速度。人們通常從最容易編寫的程序開始,但這可能不是運行它的最快方式,因此仍需要進一步調整。」

例如,假設圖像由 100×100 的數字數組表示,每個數字對應一個像素,並且您希望獲得這些數字的平均值。這可以在兩階段計算中完成,首先確定每行的平均值,然後獲取每列的平均值。ATL 有一個相關的工具包——計算機科學家稱之為「框架」——它可以展示如何將這個兩步過程轉換為更快的一步過程。

「我們可以通過使用一種叫做證明助手的東西來保證這種優化是正確的,」劉說。為此,團隊的新語言建立在現有語言 Coq 的基礎上,其中包含一個證明助手。反過來,證明助手具有以數學嚴謹的方式證明其斷言的內在能力。

Coq 有另一個內在特性使其對基於 MIT 的團隊具有吸引力:用它編寫的程序或其改編版總是終止並且不能在無限循環中永遠運行(例如,用 Java 編寫的程序可能會發生這種情況)。「我們運行一個程序來得到一個單一的答案——一個數字或一個張量,」劉堅持說。「一個永不終止的程序對我們來說毫無用處,但終止是我們通過使用 Coq 免費獲得的東西。」

ATL 項目結合了 Ragan-Kelley 和 Chlipala 的兩個主要研究興趣。Ragan-Kelley 長期以來一直關注高性能計算背景下的算法優化。與此同時,Chlipala 更關注算法優化的形式化(如基於數學的)驗證。這代表了他們的第一次合作。Bernstein 和 Liu 去年被引入企業,ATL 就是結果。

它現在是第一個,也是迄今為止唯一一個具有正式驗證優化的張量語言。然而,Liu 告誡說,ATL 仍然只是一個原型——儘管它很有希望——它已經在許多小程序上進行了測試。「展望未來,我們的主要目標之一是提高 ATL 的可擴展性,以便它可以用於我們在現實世界中看到的更大的程序,」她說。

過去,這些程序的優化通常是手工完成的,而且更加臨時,這通常涉及反覆試驗,有時還會出現大量錯誤。使用 ATL,Liu 補充說,「人們將能夠遵循一種更有原則的方法來重寫這些程序——而且這樣做更容易,也更能保證正確性。」

文章來源: https://twgreatdaily.com/zh/04a614d2387639263227b952ab9129ba.html