MIT開發PaSh系統:準確性前提下讓程序運行得更快
科學家近日研發了新系統,在保證準確性的前提下讓計算機程序運行的更快。來自麻省理工大學的一支科研團隊創造了一項新技術[ PDF ],通過並行化程序來提高在Unix shell 中的程序運行速度。這是一個50 年前創建、至今仍被廣泛使用的編程環境。
他們的方法將這些程序並行化,這意味著它將程序組件分成可以在多個計算機處理器上同時運行的部分。這使程序能夠在其原始運行時間的一小部分內執行Web 索引、自然語言處理或分析數據等任務。
麻省理工學院計算機科學和人工智能實驗室(CSAIL) 的研究科學家Nikos Vasilakis 說:“有很多人使用這些類型的程序,比如數據科學家、生物學家、工程師和經濟學家。現在他們可以自動加速他們的程序,而不必擔心會得到錯誤的結果”。
該系統還使開發數據科學家、生物學家、工程師和其他人使用的工具的程序員變得容易。Vasilakis 補充說,他們不需要對他們的程序命令進行任何特殊調整來實現這種自動、無錯誤的並行化,他是來自世界各地的研究人員委員會的主席,他們已經在這個系統上工作了近兩年。
Vasilakis 是該小組最新研究論文的高級作者,其中包括麻省理工學院的合著者和CSAIL 研究生Tammam Mustafa,並將在USENIX 操作系統設計和實現研討會上發表。
合著者包括主要作者、賓夕法尼亞大學研究生Konstantinos Kallas;華沙Staszic 高中的學生Jan Bielak; Aarno Labs 的軟件工程師Dimitris Karnikis;前麻省理工學院博士後,現為Google軟件工程師的Thurston HY Dang;史蒂文斯理工學院計算機科學助理教授Michael Greenberg。
這個名為PaSh 的新系統專注於在Unix shell 中運行的程序或腳本。腳本是指示計算機執行計算的命令序列。shell 腳本的正確和自動並行化是研究人員幾十年來一直在努力解決的一個棘手問題。
Unix shell 仍然很受歡迎,部分原因是它是唯一一種允許一個腳本由多種編程語言編寫的函數組成的編程環境。不同的編程語言更適合特定的任務或數據類型;如果開發人員使用正確的語言,解決問題會容易得多。
Vasilakis 補充道:“人們還喜歡使用不同的編程語言進行開發,因此將所有這些組件組合到一個程序中是經常發生的事情”。雖然Unix shell 支持多語言腳本,但其靈活和動態的結構使得這些腳本難以使用傳統方法進行並行化。
當一個程序用一種語言編寫時,開發人員有關於它的特性和語言的明確信息,可以幫助他們確定哪些組件可以並行化。但是這些工具不存在用於Unix shell 中的腳本。用戶無法輕鬆查看組件內部發生的情況或提取有助於並行化的信息。
為了克服這個問題,PaSh 使用了一個預處理步驟,將簡單的註釋插入到它認為可以並行化的程序組件上。然後PaSh 嘗試在程序運行時並行化腳本的這些部分,在它到達每個組件的確切時刻。這避免了shell 編程中的另一個問題——無法提前預測程序的行為。
通過“及時”並行化程序組件,系統避免了這個問題。與嘗試提前執行並行化的傳統方法相比,它能夠有效地加速更多的組件。
即時並行化還確保加速程序仍然返回準確的結果。如果PaSh 到達無法並行化的程序組件(可能它依賴於尚未運行的組件),它會簡單地運行原始版本並避免導致錯誤。