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