專利名稱:一種交互式并行化編譯系統(tǒng)及其編譯方法
技術領域:
本發(fā)明涉及編譯技術,更具體地說涉及一種交互式并行化編 譯系統(tǒng)及編譯方法。
背景技術:
隨著片上多核處理器時代的到來,如何使應用程序在多核體 系結構下獲得好的性能,已成為一個研究熱點。加快應用程序的
執(zhí)行速度的方法主要有兩種 一種是程序員顯式使用并行編程技 術來開發(fā)應用程序,該方法由于受限于現(xiàn)有語言模型的局限性和 求解問題的復雜度,沒能得到大規(guī)模的推廣;另一種就是依賴于 并行編譯器自動或半自動地將串行程序并行化。
串行程序并行化是并行處理領域研究的熱點問題,也是高性 能計算領域需要解決的問題之一。并行化分為全自動并行化和交 互式并行化兩種4莫式。近年來,人們在并行化理i侖和實用方法兩 方面都取得了一些進展,出現(xiàn)了一些全自動并行化系統(tǒng),如 UIUC(伊利諾伊大學厄本那-香檳分校)的Polaris, Stanford(斯 坦福)的SUIF,復旦大學的AFT等。這些全自動并行化系統(tǒng),通 過采用過程間分析、符號數(shù)據(jù)相關性分析、數(shù)組私有化、歸約識 別、復雜形式的歸納變量識別以及運行時分析等技術,不需要人 為干預,可以自動發(fā)現(xiàn)程序中可并行的部分來生成并行代碼,具 有一定的并行化能力。但是,由于在全自動并行化系統(tǒng)中使用的 并行化算法還不能有效地處理復雜的應用程序,以及無法有效處 理多個拆分后的小程序之間的依賴關系并同時保持原有串行程序 語義,導致編譯的實際效果不太理想。這類全自動并行化系統(tǒng)主 要應用在科學計算,不能適用于如桌面應用、多媒體以及服務器 等更廣泛的領域。交互式并行化系統(tǒng)則是通過給用戶提供程序中的有效信息,包括相關性分析結果、程序調(diào)用圖、性能預測結果等幫助用戶進行并行化工作,例如Greenwich (格林威治大學)大 學的CAPTools, Rice大學的Fortran D系統(tǒng)和Applied Parallel Research (應用并行計算研究所)的Forge90等均是交互式并行化系統(tǒng)。這些交互式并行化系統(tǒng),在盡可能采取自動并 行化技術的同時,允許在并行化過程中人為查看和修改并行化結 果,通過利用人工的能力來提高并行化效果,在部分程度上彌補 了全自動并行化系統(tǒng)的不足。但是,上述交互式并行化系統(tǒng)普遍 都沒有釆用最新的自動并行化技術,而且其交互方法以及與用戶 間協(xié)作的緊密性有待提高,因此,它們的并行化效果在現(xiàn)行多核 體系結構下仍然不夠理想。發(fā)明內(nèi)容本發(fā)明所要解決的技術問題是提出 一種提供友好的交互手 段、使用戶與編譯器緊密協(xié)作、并結合最新的先進并行化技術、 并使串行應用程序在多核體系結構下獲得好的性能的交互式并行 化編譯系統(tǒng)及其編譯方法。本發(fā)明為解決其技術問題提供了 一種交互式并行化編譯系 統(tǒng),該系統(tǒng)包括具有多核處理器的計算機和運行在多核處理器的 計算機環(huán)境下的編譯器,其中,編譯器為Eclipse編譯器,交互 式并行化編譯系統(tǒng)還包括交互式并行化插件和交互式并行化引 擎,交互式并行化插件為基于Eclipse編譯器的交互式視圖插 件,通過和用戶交互來獲取交互信息,將串行程序信息和交互信 息傳輸?shù)浇换ナ讲⑿谢妫唤换ナ讲⑿谢娼邮沾谐绦蚝?交互信息,確定串行程序的計算結構特性,對不同特性的計算采 用不同 并行化策略進行并行化,并將并行化結果傳遞給交互式 并行化插件。本發(fā)明還提供了一種交互式并行化編譯方法,該方法基于Eclipse編譯器,通過與用戶交互來對串行程序編譯為可由計算 機的多核處理器來并行處理的并行程序,該方法包括預備階段和 并行化階段,在預備階段交互式并行化插件與用戶交互獲取交互 信息,交互式并行化引擎接收交互信息并進行自動化程序分析, 確定串行程序的計算結構特性;在并行化階_險,交互式并行化插 件與用戶交互獲取交互信息,交互式并行化引擎對不同特性的計 算采用不同的并行化策略進行并行化,并將并行化結果傳遞給交 互式并行化插件,Eclipse編譯器顯示并行化結果。本發(fā)明提供的交互式并行化編譯系統(tǒng)和編譯方法,根據(jù)自動 分析所得的信息,結合通過交互方式由用戶提供的信息,形成程 序的計算結構特性。針對不同的計算,采用不同的并行化方法實 現(xiàn)源到源的并行化轉換。本發(fā)明具有以下優(yōu)點(1) 基于Eel ipse編譯器的插件來實現(xiàn)交互功能,提供了 友好的可^L化環(huán)境和強大的用戶交互功能,具有較好 的可移植性和可擴展性;(2) 釆用源到源的變換,具有通用性,可針對不同目標機 器體系結構獲得較好的并行化效果;(3) 采用最新自動并行化分析技術與交互式結合,較好地 抽取程序信息及用戶知識,具有較強的程序理解能力;(4) 支持多種不同類型計算,提供相應的并行化方案,支 持多種粒度的并行性,支持投機多線程并行化。
圖1為本發(fā)明的交互式并行化編譯系統(tǒng)的結構框圖;具體實施方式
7為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合 附圖和實施例對本發(fā)明進行詳細描述。圖1為本發(fā)明的交互式并行化編譯系統(tǒng)的結構框圖,參見圖 1 ,本發(fā)明提供的交互式并行化編譯系統(tǒng)包括具有多核處理器的計算機,Eclipse編譯器1在多核處理器的計算機環(huán)境下運行。 Eclipse編譯器1作為底層基礎框架,交互式并行化插件2和交 互式并行化引擎3相互協(xié)作,將串行程序編譯為可由多核處理器 并行處理的并行程序。本發(fā)明所述的Eclipse編譯器為基于 Eclipse環(huán)境的編譯器。交互式并行化插件2是基于Eclipse編譯器1的交互式視圖 插件,使用了 Eclipse編譯器的插件環(huán)境作為基底平臺進行開 發(fā),提供了友好的交互式可視化環(huán)境和用戶交互功能,通過和用 戶進行交互來獲取相關性能參數(shù)和用戶經(jīng)驗知識等交互信息,并 傳遞給交互式并行化引擎3以指導并行化工作。用戶通過 Eclipse編譯器的編輯器選擇程序塊,再由交互式并行化插件2 中的菜單選擇并行化功能,觸發(fā)交互式并行化引擎3進行并行化 操作。交互式并行化引擎3接收交互式并行化插件2所獲取的交 互信息,進行源到源的并行化轉換,并將并行化轉換結果傳遞給 交互式并行化插件2。交互式并行化插件2接收并行化結果,對 源程序進行重寫操作,在Eclipse編譯器的編輯器中向用戶顯示 結果,并可進一步接收用戶的反饋,按需進一步進行并行化操 作。交互式并行化引擎3包括交互式模塊31、自動并行化模塊 32、程序變換^t塊33以及并行代碼生成模塊34。交互式并行化 插件2將串行程序信息以及交互信息經(jīng)由交互式模塊31傳輸給 交互并式行化引擎3,交互式并行化引擎3在獲取交互信息的基 礎上,對串行程序進行并行化工作。交互式模塊31是交互式并行化引擎3與交互式并行化插件 2的接口模塊,通過這個模塊,交互式并行化引擎3獲取交互信 息,并將程序分析及并行化結果傳給交互式并行化插件2。自動并行化模塊32接收串行程序和交互信息,進行程序分析。根據(jù)獲得的交互信息篩選出線性任務計算。對于非線性任務計算,再進行過程內(nèi)數(shù)據(jù)流分析和過程間分析,篩選出遞歸任務計算。對于非任務計算,再進行數(shù)據(jù)依賴分析,來區(qū)分規(guī)則數(shù)據(jù) 流計算和特定計算。程序變換模塊33接收交互信息和自動并行化模塊32的分析 結果,對串行程序進行理解,并準對不同計算選擇合適的并行化 策略進行并行變換。程序變換模塊33針對四種類型的計算提供 了相應的并行化方案。對于線性任務計算,根據(jù)交互信息建立開 銷模型,采用基于圖模型理論的方法,對程序圖模型進行劃分和 調(diào)度,來挖掘粗粒度任務級并行性。對于遞歸任務計算,采用并 行分治算法,使用并行庫對程序進行變換。對于規(guī)則數(shù)據(jù)流計 算,根據(jù)交互信息建立性能模型,釆用仿射劃分算法對程序進行 變換,獲得流水級并行。對于SPECCPU200G Compress等的特定 計算,采用開銷驅動、基于釆樣和反饋的用戶經(jīng)驗信息指導的投 機多線程并行化方法對特定計算進行并行化處理。并行代碼生成模塊34對程序變換模塊33產(chǎn)生的相關并行化 變換進行源代碼更改,生成并行化代碼。對于C語言串行程序, 生成串行程序代碼與0penMP指導語句相結合的并行化代碼。整個交互式并行化引擎3不斷循環(huán)工作,與用戶進行交互, 獲取相關用戶知識經(jīng)驗信息,并進一步按需進行并行化處理,直 到滿足用戶的并行化結果性能要求,具有積極的交互能力及較強 的并行化能力。9交互式并行化插件2還提供了性能參數(shù)配置頁,通過用戶自 定義性能參數(shù),與交互式并行化引擎3進行交互,動態(tài)地確定開 銷模型,來指導并行化工作。與性能參數(shù)配置頁類似,交互式并 行化插件2還提供了用戶知識窗口 ,用戶通過輸入程序運行的相 關知識,來指導投機多線程并行化工作。另外,交互式并行化插 件2還提供了可視化瀏覽環(huán)境,包括可以查看并行化效果的可視 化性能分析器,以及可以查看程序信息圖的多圖瀏覽器。在交互 式并行化引擎3完成并行化工作后,交互式并行化插件2負責將 并行化后的代碼寫入,對源文件進行修改,并在Eclipse編譯器 的編輯器中實時顯示并行化結果。本發(fā)明提出了一種計算類型驅動的并行化算法,并以此算法 作為理論基礎,針對不同類型的計算,采用不同的并行化策略。 本發(fā)明所支持的計算包括1.由線性任務組成的計算,如多媒體 編解碼應用程序,MDG程序(分子動態(tài)才莫擬程序,Perfect Benchmarks的一部分)等等;2.由遞歸任務組成的計算,例如使 用分治方法解決問題的應用等;3.由規(guī)則數(shù)據(jù)流組成的計算,如 一部分科學計算應用程序等;4.特定計算,諸如SPECCPU2000 Compress等。本發(fā)明的核心算法分為兩個階段預備階段和并行化階段。 預備階段,主要用來獲取串行程序相關信息。通過交互方式,根 據(jù)用戶提供的信息來篩選線性任務計算。然后,進行自動化程序 分析,包括過程內(nèi)數(shù)據(jù)流分析和過程間分析,篩選遞歸任務計 算。最后,通過數(shù)據(jù)依賴分析,來區(qū)分規(guī)則數(shù)據(jù)流計算和特定計 算。確定串行應用程序的計算結構特性后,進入并行化階段。并 行化階段針對不同特性的計算,采用不同的并行化策略。對于線 性任務計算,通過與用戶交互來建立開銷模型,并根據(jù)開銷模 型,釆用基于圖模型理論的方法,對程序圖模型進行劃分和調(diào) 度,來挖掘粗粒度任務級并行性。并將并行化結果顯示給用戶,并行化過程是迭代進行,直到用戶滿意并行化結果。對于遞歸任 務計算,采用并行分治算法,使用并行庫對程序進行變換,并顯 示并行化結果。對于規(guī)則數(shù)據(jù)流計算,通過用戶交互手段,獲取 性能評估信息,根據(jù)性能模型使用仿射劃分算法對程序進行變 換,并顯示并行化結果。對于特定計算,通過與用戶交互,獲取 用戶經(jīng)驗信息來指導投機執(zhí)行,采用開銷驅動、基于釆樣和反饋 的投機多線程并行化方法對特定計算進行并行化處理,再通過一 個支持投機并行的運行時環(huán)境的模擬執(zhí)行,獲得并行化性能值, 并將并行化性能結果顯示給用戶,并行化過程迭代進行,直到用 戶滿意并行化結果。
本發(fā)明的核心算法,即根據(jù)串行程序的計算特性使用合適的
并行化策略進行源到源轉換,其偽代碼描述如下 廣preparation phase"/
computation—info = Collect—interaction—info(PRE—PHASE)
if(computation—info is xml file){ /* filter linear task computation from others */
id = LI NEAg_TASK—COMPUTATION J else {
Data—flow_analysis(id)
lnterprocedural_analysis(id) /* filter out recursive task computation */ Data—dependence—ar13lysis(id)
/* distinguish regular data flow computation from "specific" computation */ }
/* customizing parallelization strategy phase "7 switch(id) {
case LINEAR—TASK—COMPUTATION: {
do {
cost—model—info = Collect—interaction—info(PAR—PHASE) Task—level—parallelism—exploration(cost—model—info) display parallelization result and interact with user } while(user expects improvement on parallelization) /* apply mapping and scheduling on program graph model */
case RECURSIVE_TASK_COMPUTATION: { DC一transformation() /* apply Divide and Conquer algorithm using parallelizing library */
case REGULAR_DATA_FLOW_COMPUTATION: {
performance—evaluation—info = Collect_interaction」nfo(PAR—PHASE)
liAP—transformation(performance一evaluation—info) 廣apply transformation using affine partition algorithm "
case SPECIFIC—COMPUTATION: { do{
user_guidance」nfo = Collect_interaction」nfo(PAR_PHASE) Speculative_parallelism_exploration(user—guidance—info) /* apply cost driven speculative multithreading parallelization based on profiling */ display parallelization result and interact with user }while(user expects improvement on parallelization)
本發(fā)明的交互式并行化編-澤方法應用交互式并行化編_澤系統(tǒng) 實現(xiàn)本發(fā)明的核心算法,包括預備階段和并行化階段。在預備階 段,交互式并行化插件與用戶交互獲取交互信息,并把交互信息 傳輸給交互式并行化引擎。交互式并行化引擎接收交互信息和串 行程序信息,自動并行化模塊先根據(jù)交互信息來篩選線性任務計 算,然后進行過程內(nèi)數(shù)據(jù)流分析和過程間分析,篩選遞歸任務計 算,最后通過數(shù)據(jù)依賴分析,區(qū)分規(guī)則數(shù)據(jù)流計算和特定計算。 在并行化階段,交互式并行化引擎的程序變換模塊對于線性任務 計算,通過與用戶交互來建立開銷模型,并根據(jù)開銷模型,采用 基于圖模型理論的方法,對程序圖模型進行劃分和調(diào)度,來挖掘 粗粒度任務級并行性,Eclipse編譯器顯示并行化結果,并行化 過程是迭代進行,直到用戶滿意并行化結果。對于遞歸任務計 算,程序變換模塊釆用并行分治算法,使用并行庫對程序進行變 換,Eclipse編譯器顯示并行化結果。程序變換模塊對于規(guī)則數(shù) 據(jù)流計算,通過用戶交互手段,獲取性能評估信息,根據(jù)性能模 型使用仿射劃分算法對程序進行變換,Eclipse編譯器顯示并行 化結果。程序變換模塊對于特定計算,通過與用戶交互,獲取用 戶經(jīng)驗信息來指導投機執(zhí)行,釆用開銷驅動、基于釆樣和反饋的
譯器顯示并行化結果,行化過程:代進行,直到用戶滿意并行化結果。
權利要求
1、一種交互式并行化編譯系統(tǒng),包括具有多核處理器的計算機和運行在多核處理器的計算機環(huán)境下的編譯器,其特征在于所述編譯器為Eclipse編譯器;所述交互式并行化編譯系統(tǒng)還包括交互式并行化插件,其為基于Eclipse編譯器的交互式視圖插件,通過和用戶交互來獲取交互信息,將串行程序信息和所述交互信息傳輸給交互式并行化引擎;交互式并行化引擎,接收所述串行程序和所述交互信息,確定所述串行程序的計算結構特性,對不同特性的計算采用不同的并行化策略進行并行化,并將并行化結果傳遞給所述交互式并行化插件。
2、 根據(jù)權利要求1所述的交互式并行化編譯系統(tǒng),其特征 在于,所述交互式并行化引擎包括交互式模塊、自動并行化模 塊、程序變換模塊以及并行代碼生成模塊,其中所述交互式模塊為所述交互式并行化插件和所述交互式并行 化引擎的接口模塊;所述自動并行化模塊對所述串行程序進行過程內(nèi)數(shù)據(jù)流分 析、過程間分析以及數(shù)據(jù)依賴分析,篩選出線性任務計算、遞歸 任務計算、規(guī)則數(shù)據(jù)流計算和特定計算;所述程序變換模塊對所述線性任務計算,根據(jù)交互信息建立 開銷模型,采用基于圖模型理論方法,對程序圖模型進行劃分和 調(diào)度,以挖掘粗粒度任務級并行性,對所述遞歸任務計算,釆用 分治算法,使用并行庫對程序進行變換,對所述規(guī)則數(shù)據(jù)流計 算,根據(jù)交互信息建立性能模型,釆用仿射劃分算法對程序進行 變換,獲得流水級并行,對所述特定計算,采用開銷驅動、基于采樣和反饋的用戶經(jīng)驗信息指導的投機多線程并行化方法挖掘其并行性;所述并行代碼生成模塊根據(jù)程序變換的結果生成相應的并行 化代碼。
3、 根據(jù)權利要求2所述的交互式并行化編譯系統(tǒng),其特征 在于,所述交互式并行化插件提供了性能參數(shù)配置頁,通過用戶 自定義性能參數(shù)來與所述并行化引擎進行交互,動態(tài)地確定開銷 模型。
4、 根據(jù)權利要求2所述的交互式并行化編譯系統(tǒng),其特征 在于,所述交互并行化插件提供了用戶知識窗口,用戶通過輸入 程序運行的相關知識,來指導投機多線程并行化工作。
5、 根據(jù)權利要求2所述的交互式并行化編譯系統(tǒng),其特征 在于,所述交互式并行化插件提供了用于查看并行化效果的可視 化性能分析器。
6、 根據(jù)權利要求2所述的交互式并行化編譯系統(tǒng),其特征 在于,所述交互式并行化插件提供了用于查看程序信息圖的多圖 瀏覽器。
7、 一種交互式并行化編譯方法,基于編譯器,通過與用戶 交互來對串行程序編譯為可由計算機的多核處理器來并行處理的 并行程序,其特征在于,所述編譯器為Eclipse編譯器,所述交 互式并4于化編譯方法包括預備階段交互式并行化插件與用戶交互獲取交互信息,交 互式并行化引擎接收所述交互信息并進行自動化程序分析,確定 串行程序的計算結構特性;并行化階段交互式并行化插件與用戶交互獲取交互信息, 交互式并行化引擎對不同特性的計算采用不同的并行化策略進行并行化,并將并行化結果傳遞給所述交互式并行化插件,Eclipse編譯器顯示并行化結果。
8、 根據(jù)權利要求7所述的交互式并行化編譯方法,其特征 在于在所述預備階段,交互式并行化引擎的自動并行化模塊先根 據(jù)交互信息來篩選線性任務計算,然后進行過程內(nèi)數(shù)據(jù)流分析和 過程間分析,篩選遞歸任務計算,最后通過數(shù)據(jù)依賴分析,區(qū)分 規(guī)則數(shù)據(jù)流計算和特定計算;在所述并行化階段,交互式并行化引擎的程序變換^t塊對線 性任務計算,通過與用戶交互來建立開銷模型,并根據(jù)開銷模 型,采用基于圖模型理論的方法,對程序圖模型進行劃分和調(diào) 度,來挖掘粗粒度任務級并行性,Eclipse編譯器顯示并行化結 果;對遞歸任務計算,采用并行分治算法,使用并行庫對程序進 行變換,Eclipse編譯器顯示并行化結果;對規(guī)則數(shù)據(jù)流計算, 通過用戶交互手段,獲取性能評估信息,根據(jù)性能模型使用仿射 劃分算法對程序進行變換,Eclipse編譯器顯示并行化結果;對 特定計算,通過與用戶交互,獲取用戶經(jīng)驗信息來指導投機執(zhí) 行,采用開銷驅動、基于采樣和反饋的投機多線程并行化方法對 特定計算進行并行化處理,Eclipse編譯器顯示并行化結果。
9、 根據(jù)權利要求8所述的交互式并行化編譯方法,其特征 在于,在所述并行化階段,程序變換模塊對線性任務計算和特定 計算的并行化過程均迭代進行。
全文摘要
本發(fā)明涉及編譯技術,提供了一種交互式并行化編譯系統(tǒng)和編譯方法,該系統(tǒng)和方法根據(jù)自動分析所得的信息,結合通過交互方式由用戶提供的信息,形成程序的計算結構特性,針對不同的計算,采用不同的并行化方法實現(xiàn)源到源的并行化轉換。本發(fā)明提供了友好的交互手段、使用戶與編譯器緊密協(xié)作、并結合最新的先進并行化技術、并使串行應用程序在多核體系結構下獲得好的性能。
文檔編號G06F9/45GK101667135SQ20091015308
公開日2010年3月10日 申請日期2009年9月30日 優(yōu)先權日2009年9月30日
發(fā)明者孫煦雪, 徐印成, 瑩 李, 袁新宇 申請人:浙江大學