TW200537379A - A system for automatically generating optimized code - Google Patents

A system for automatically generating optimized code Download PDF

Info

Publication number
TW200537379A
TW200537379A TW094101190A TW94101190A TW200537379A TW 200537379 A TW200537379 A TW 200537379A TW 094101190 A TW094101190 A TW 094101190A TW 94101190 A TW94101190 A TW 94101190A TW 200537379 A TW200537379 A TW 200537379A
Authority
TW
Taiwan
Prior art keywords
code
optimized
optimization
receiving
module
Prior art date
Application number
TW094101190A
Other languages
English (en)
Inventor
Francois Bodin
William Jalby
Pasteur Xavier Le
Christophe Lemuet
Eric Courtois
Jean Papadopoulo
Pierre Leca
Original Assignee
Commissariat Energie Atomique
Caps Entpr
Ass Transversa
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat Energie Atomique, Caps Entpr, Ass Transversa filed Critical Commissariat Energie Atomique
Publication of TW200537379A publication Critical patent/TW200537379A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • General Factory Administration (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Chair Legs, Seat Parts, And Backrests (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Pinball Game Machines (AREA)

Description

200537379 九、發明說明: 【發明所屬之技術領域】 本發明提供—種用以自動產生最佳化碼之系統,該最佳 化碼適合在-包括至少一處理器之預定硬體平臺上執行, 且適用於-預定應用領域,且係源自使用者所提交之源碼 (此處之該等"使用者”應作廣泛之理解,即不僅包含 用者亦包含應用程式程式師及系統程式師)。 【先前技術】 自計算之肇始’即已在編譯程式方面作了大量之工作。 編譯程式之原理是,分析以高階語言寫就之源碼,然後 2目標機器產生源碼之二進位等效碼。—般在執行之前靜 悲地κ〜此處理程序。亦存在實施動態編譯技術之解譯 器,該等動態編譯技術藉由最後在執行之時產生碼而克服 靜態限制。 、為#耘式疋程式預備鏈中之一環。編譯之結果可與已編 譯並產生之程序(獨立編譯或取自函數庫(librar幻中),及載 入時靜態鏈接進來或執行時動態鏈接進來之程序結合。 一般以三個步驟組織編譯程式: 1) 產生中間碼:自源碼開始,編譯程式匹配模式並產生 獨立於源語言之抽象形式,通常稱為中階語言。此語言獨 立於目標機器。 2) 回階最佳化:此步驟結合了一般而言獨立於目標架構 各種最佳化·$數之傳播(pr〇pagati〇n 〇f c〇nstants)、強 制減 >、(force reduction)、共同表達(c〇nini〇n eXpressi〇n)...... 98614.doc 200537379 此等最佳化一般對應簡單量度(metric) ··減少指令數量,簡 化碼結構。 3)產生碼及低階最佳化··此步驟中實施特別針對該目標
機器之所有作業及最佳化:產生並選擇指令,配置暫存器, 定序指令等等。 M 編譯程式之品質不僅與目標架構(所產生之碼之效能)有 關’亦與源語言(編譯之難易)及其作為軟體之特徵(健壯性 (r〇bUStneSS)、選項之豐富度、執行之速度等等)有關。 除動態編釋之特別情形外,所有上述三個步驟皆必須於 ^丁之⑴Λ細’ _1_必須在合理時間内完成,因此相應地限 制了編譯程式中所可實施之最佳化演算法之複雜度。 ,此,起初大量的編譯程式方面的研究致力於選擇並定 義兩階源語言。 編譯程式之進步亦與處理 而一漁松、4·、, 本傅I進步有關,更確切 而吕與祂述此4架構之行為 化問題-樣,—主要之困二二“拉型有關。如所有最佳 本函數。 |之困難在於定義-代表執行時間之成 起初之指令集之行為非常簡單 可作為序列中之每—俨 "序列之執行時間 結果最佳化處理程序二單仃:間之和而簡單地獲得。
降低所產生之指令之數量及複雜度主要之最佳化策略在於 f批複雜指令集電腦(CI 化,使一此非受w 出現使情勢發生稍微的變 二非吊歿雜之指令轉為可圈 實質上轉為模式”、用。之後最佳化之問題 、式匹配問題。此類別亦可包含向量指令集, 98614.doc 200537379 及能辨涊直接幫助產生向量碼的迴圈的向量化程式 (vectorizer)。若有必要,亦可轉換源碼以揭示向量碼結構。 在流水線出現之後,最佳化策略發生了一次中斷,流水 線係一種將對指令之處理細分為複數個按次序實施之作業 的架構開發,如工廉裏的組裝線一般。該技術使複數個指 令可同時執行,因而顯著提高了系統之效能,但是若流水 線”分裂”(例如由於分枝指令之存在),貝#將導致嚴重偏 差其亦使一段給定碼片段之行為轉為不可預測。另一主 要中憶體階層架構之應用··最佳化則需要依賴對 特疋里度之精確估算··局部性(空間上及時間上)。然而, 由於處理器與記憶體系統之間之互動簡單,故最佳化處理 程序應以將錯失(miss)數量最小化為其主要目的,因為每一 錯2會增加執行時間之損失。然而,應注意到難於將錯失 數里最小化’且實質上僅可對簡單的迴圈類型之碼結構實 施取小化。靜態估計局部性性質之此困難導致使用藉由管 理叹疋檔而最佳化之方法··首先執行碼以準確轉定局部性 性:…建構_設定檔)。然後在第二步中結合使用局部性而 將該設定檔用以實施最佳化。在此架構複雜度階層上 很難以簡單方式定義一有效之最佳化策略。更確切士之 道如何結合各種不同之最佳化,即物常簡 ^月中·已經沒有一種適於以高效之方式建立效能之 =或將其考慮在内之機制。正是在此處境中迭代編譯技 何:到發展’其將執行及最佳化結合在一起以產生所可能 之取佳碼。更確切言之,迭代編譯在於執行一迴圈,包括 98614.doc 200537379 轉換碼,然後(靜態地或動態地)量測其效能。該等技術者併 ^就是以保持給出最佳解決方案之彼等方案為目的,= 成本的碼轉換空間。此等迭代方法在計算時間上:開 發時間上之高成本將其自身之應用領域限制於 佳化上。 数犀之取 八十年代中期出現了利用簡單而統一之指令集的精簡指 令集電腦(RISC)(與CISC相反)架構。第一代Risc處理器^ 功能上非常有限,gj此所產生之碼之品f (特別是指令之定 序)則變成效能競爭中之一關鍵因素。以非常相似之方式疋 極長指令字組(VLIW)架構利用了在最佳利用硬體上非4相 似之編譯技術。R〗S C及V L〗w架構總具有一簡單的效倉2 ^ 里所有心·7以與所產生之程式碼相同之順序得到執行,、 就此等方面而言該模型是痛定性的,因而大大簡化了該等 架構之行為,因而亦簡化了最佳化處理程序,然而,S等 条構很快就推廣了流水線及記憶體快取之應用,以獲得較 佳之效能(更確切言之,此導致平均效能之提高,此^^予2 測性不利)。 超標量架構(其在每一循環中能執行複數個指令)之出 現,以及最重要的是用,以處理指令之無序(out_of_ordeo處 理機制之出現使最佳化效能之處理程序更為困難。此外, 記憶體階層架構取得了迅速進步:階層之數量增加,以及 最重要的是出現了各種用來以不同明確程度之方式管理各 種快取(預載入’優先權管理···…)的機制。此等機制結合在 一起使即使非常簡單之碼片斷(存取兩三個表的迴圈)之行 98614.doc 200537379 為亦變得極其難於預測,因而不可能基於簡單的效能模型 進4丁最佳化。隨著虛拂哭+ 4 , 考處理裔之效能與記憶體之效能之間之差 異增大,此形勢變得更為嚴峻。 整體而§ ’近二十年來,處判架構之能力已經顯著增 強口此f存益之數量顯著增多:從CISC架構之標準的 〇個暫存器’ RISC架構增至32個暫存器,且超標量架構則 :至超:80個暫存器。乍一看,可能會認為暫存器數量之 U口會間化取佳化。實務上,記憶體之進步已使暫存器之 =變得更為重要,且在配置暫存器之此問題上,有效的 〜 本已頒者增加,因為其複雜度係可 侍之暫存器之數量的指數函數。 Γ應此等最新發展,編譯程式技術已發生稍微之變化·· 最佳:之數量的媒已增多,但是定義-整體最佳 朿略之此力迄未增強,甚至減弱了。 =後取新之趨勢在向著"動態"編譯發展。該原則簡單 即二動態編譯(或執行時之專用化)在於在最後時刻 入資^執^最佳化碼。調適碼序列(”被專用化”)為程式之輸 令序列ITT之函數°在執行時’―機制"檢查”作為指 =執:頻率之函數的程式行為,並決定是否一 i;rrr最,之版本。此類内在動態機制僅限於 因為貫施的々异時間方面成本不高的最佳化技術, 因為其必須不妨礙其所欲最佳化之碼之執行 隹應注函數庫是代表一領域或此領域之一部分的程序 本④數庫之成分需對應標準的或常用之程序。函數庫 98614.doc 200537379 之概念很早就有,比編譯程式之理念還早,且其係軟體工 程之主要支柱(再利用成分)之一。具體言之,Java是很系統 地使用函數庫概念的語言之一實例。 函數庫可對應從最簡單到最複雜的不同的抽象階層: BLAS 1 (”基本線性代數次常式第丨階層,,)是與向量相關之 非系簡單之作業之集,但其使大量習知之線性代數演算法 可被表達。而在另一極端,LINPACK& EISpACK是用以分
別解決線性系統及本征向量及/或本征值之程序之完全 集。大里之函數庫業已得到開發且廣泛應用於下列特定領 域中: .科學計算:BLAS 卜 BLAS2、BLAS3、BLAST、spARsE BLAS、UNPACK、LAPACK、BLACS、pVM、Mpi等等; • Λ號處理:fftpack、VSIPI等等;及 •圖形·· DirectX、0penGL。 一一給定應㈣域中已^義及識別數量之函數庫的事 貫表示可”合成”所討論之領域。 然而函數庫之最大缺陷在於其能力非常有限,且並要长 手動利用(即其要求明確啤叫欲插入於源碼中之程序)。 一第代函數庫(對應於小型的簡單程序卜般係以組譯語 :手工開發。只要效能係一主要標準則情形往往如此(當然 前提是程序保持合理大小)。 、 =’與通常是”線上(in_iine)i,處理程序的編譯 澤時間必須保持適中),最佳化函數庫基本上 (〇ff-line)”處理程序,且可利用非常耗費計算時間之方法 98614.doc 200537379 因此’迭代編譯是開發函數庫的極佳的最佳化工具,但是 不幸的是,由於其使用成本,僅可用於最簡單之碼。 在相同線上,自動調諧線性代數軟體類型之技術使能夠 貫施若干最佳化(選擇好的參數,如區塊大小)。不幸的是, 由於該技術嚴重依賴於所考慮之應用之類型(在密集矩陣 上之計算,以極高程度之時間局部性為特徵之計算),因而 在使用上非常有限。 見有的用以分析效能的工具是各種各樣的(特別取決於 所追求之目的): •效能測試(”評效程式組”)··此係若干段碼,其或多或少 代表一應用領域,且使各種機器之效能得以比較。 •模擬器:此等模擬器使一架構之行為得以在最高級別 上獲理解。不幸的是,其成本非常高,難於開發,非常慢, 且不一定精確代表目標處理器。 •數學模型:其思想是將機器之效能轉化為方程形式。 一般其使用極其有限,且僅對研究與同一段非常簡單之碼 相近之不同簡單變體有效。 •用以監控及/或管理設定檔之工具··此等 /、此寻工具可用以(藉 使用具有專用硬體之電腦)恢復與-程式之執行有關的 不同類型之資訊,此處此等資訊與循環數量、錯失數量等 等有關。 可作下列陳述: 效能測試之進步極小,且最重要的是其已經轉為太多 商業投資之主題。提供商經常特別以在評效測試中可良好 98614.doc 12 200537379 地實施為目的來最佳化碼,此導致所獲得之結果之範圍及 有效性具有誤導性。 杈擬裔·既然目標架構變得非常複雜,利用模擬器所 給出之結果(以最佳化碼)就變得愈來愈困難。 .數學模型··此等模型進步極小,且除上述之局部使用 之外其是不可用的。原因之一是好的數學模型化工具依賴 於’’一致平均”行為,這在實務上是極不合事實的。 •用以監控及/或管理設定檔之工具··此等工具基本上具 有=個缺陷:其給出全局性且與活動在時間上:分佈無關 之資訊;其不能使碼與行為在精確階層上關聯在一起;最 後,报難(如模擬器一般)有效利用之,此係特別由於目標= 構之複雜性。 μ 【發明内容】 本發明尋求彌補上述缺陷,並使一包括至少一處理器之 =定硬體平臺’可能以自動方式對使用者所提供之源^ 業,以為—預定應用領域產生於該平臺上執行之最佳化碼。 ^具體言之,本發明尋求關立於所選之源語言之方 提高電腦系統之效能,以及為實施架構之處理器的系统^ 局其效㊣,該架構可利用簡單或複雜之指令且可包含大= 或少量之暫存器、功能單元及快取階層(cachei_)。里 的=發明之Γ目較’避免專用程式函數庫之功能覆蓋 R。限,並尋求創建-用以自動產生最佳化碼之系統, ::化碼在可能呈現不同程度之複雜度的大量的相:: 構方面得到最佳化。 馬〜 986l4.doc 13 200537379 根據本發明,μμ ~ _ 用者所楛▲ 勺错由-系統而達到:此系統對使 ;者 之源碼自動作業,以產生適於在-包括至少- 處理器之預定硬體平臺上執行,且用括至/ 最佳化碼,該系统之特以:^預疋應用領域之 序料在於,其包括用以接收稱作評效 序歹】的付唬碼序列之構件,苴 理器在預定應用領域之效能;:面表 ^ ^ £jMt >文靶方面之仃為;用以接收基於該
二广平臺、其處理器及該等評效序列而定義之第一靜 ㈣數的構件;用以接收亦自該預定硬體平臺、其處理器 f該等評效序列而定義之動態參數的構件’·-用以自使用 j序歹J评怨參數及動態參數而進行之對效能之測試及 量測而建立最佳化規則之分析裝置;一用以最佳化及產生 碼之#置’其先接收評效序列,再接收最佳化規則以檢查 使用者源碼,偵測可最佳化迴圈,將其分解為若干核心碍, 並組譯及嵌入媽以傳遞最佳化碼;及用以將來自用以產生 及最佳化碼之裝置且與該等核心碼相關之資訊再礙入回評 效序列之構件。 更具體δ之’分析裝置包括—測試產生器,其首先連接 至用以接收評效序列之構件,其次連接至用以接收靜態參 數之構件,以自動產生大量測試變體(㈣復丨㈣,該等測 試變體由傳輸構件傳輸至變體資料庫中而儲存起來;一操 作器(eXerCiSer),其首先連接至用以接收儲存於變體資料庫 中之測試變體的傳輪構件,其次連接至用以接收動態參數 之構件,以在動恶參數變化範圍内執行測試變體並產生結 果,該等結果由傳輸構件傳輸至結果資料庫中而儲存起 98614.doc -14- 200537379 來;及一分析器,其連接至傳輸構件以接收儲存於結果資 料庫中之結果,分析該等結果,並自此導出最佳化規則, 該等最佳化規則由傳輸構件傳輸至一最佳化規則資料庫 中 〇 有利的是,該分析器包含具有一任意最佳效能臨限值之 過遽構件’以使若該結果資料庫中之一變體滿足過遽標準 則認為其為參數空間中之最佳者。
在一較佳實施例中,該分析器另外包括用以修改靜態參 數之構件及用以修改動態參數之構件。 用以最佳化及產生碼之裝置包括—用以產生最佳化碼之 裝置及-最佳化器’該最佳化器包括一策略選擇模組,該 策略選擇模組首先連接至用以接收原始源碼中所識別出之 核心碼的構件’其次連接至用以接收評效序列之構件,再 其次連接至用以接收最佳化規則之構件,以對每一對應於 一受測試評效序列的核心碼產生複數個版本,每一版2在 -定參數組合下是最佳的…組合及組譯模組 (C〇mblnation and assembIy m〇dule),該組合及組譯模組連 接至用以接收最佳化規則之構件,用以接收來自策略選擇 模組之資訊的構件,及用以接收複數個版本之構件,以經 由傳輸構件傳遞包括τ列内容之資訊··相應之最佳化版 本、其使輕及用以動態地確定哪—版本最恰當之測試適 合在何處執行。 最佳化核 心碼 而連接至該最 次在-較佳之可選實施例中,該系統包也 貧料庫’且該組合及組譯模組藉由傳輸稍 98614.doc 200537379 佳化核心碼資料庫以將資訊儲存於該最佳化核心碼資料庫 • 中,該資訊包括最佳化版本、其使用區及用以動態地確定 哪一版本最恰當之測試適合在何處執行。 • 用以最佳化及產生碼之裝置包括一最佳化器及一用以產 生隶佳化碼之I置,该用以產生最佳化碼之裝置包括一連 接至用以接收使用者源碼之構件的用以偵測可最佳化迴圈 的模組,一用以將其分解為若干核心碼的模組,一用以個 • 案分析、組譯及碼嵌入之模組,其經由傳輸構件連接至該 最佳化器以傳輸所偵測之核心碼之身份,及連接至用以接 收描述相應之最佳化核心碼之資訊的傳輸構件,該用以個 案分析、組譯及碼嵌入之模組亦連接至用以提供最佳化碼 之構件。 用以個案分析、組譯及碼嵌入之模組亦連接至該最佳化 核心碼資料庫,以便若所搜尋之核心碼已儲存於其中則無 耑5周用最佳化器而接收描述最佳化核心碼之資訊。 • 根據一有利特徵,用以個案分析、組譯及碼嵌入之模組 另外包括用以將在用以個案分析、組譯及碼嵌入之模組中 所發現的,且在最佳化核心碼資料庫及評效序列中均無相 應身份的核心碼添加到評效序列中的構件。 在一特定實施例中,該系統包含一編譯程式及一鏈接編 輯程式(link editor),其用以接收來自用以最佳化及產生碼 之裝置的再組織源碼,並產生適於該硬體平臺之最佳化二 進位碼。 該系統可包含用以將最佳化核心碼之源碼自最佳化核心 98614.doc -16- 200537379 碼資料庫傳輸至編譯程式的構件。 在另一不同之實施例中,該系統可包含一編譯程式及一 安裝模組,其用以將一動態函數庫安裝於硬體平臺上,該 函數庫含有最佳化核心碼的所有功能。 本發明可應用於不同之應用領域,特別是科學計算、訊 號處理及圖形處理。 根據一特定特徵,評效序列包括一個簡單且一般之迴圈
類型之碼片斷之集,該等碼片斷係以源類型語言而規定 的,且係以階層架構之形式,按迴圈體之碼之複雜度遞增 之次序而進行組織。 在恰當之處,評效序列包括第0階層之評效序列,其中僅 對單個作業進行測試,且該作業對應於由高度等於〇之樹所 代表之單一算術表達式所構成之迴圈體。 卜"平效序列可包括第1階層之評效序列,對此考慮並 測試··兩個第〇階層作業之組合;及對應於下述迴圈體之第 1階層評效序列作業,該等迴圈體由-由-高度等於丨之樹 鳴之單個算術表達式所構成,或者由兩個各由高等於〇 之树所代表之算術表達式所構成。 在一可能之實施例 列,對此考慮並測試 作業的組合。 中,評效序列包括第1階層之評效序 兩個第1階層之作業或三個第〇階層之 多數具體包括每一坪六今成而| 、 汁效序列之迴圈迭代之數量 存取牛且Ώ ,迥圈送代之數量,表 用算元類型’所用指令之類型,預載策略,及 用於疋序指令及送代之策略。 986I4.doc •17- 200537379 動態參數具體包括表運曾开启々降μ 70在5己憶體階層架構各階層中 之位置,表起始位址之相對位s,及分枝歷史。 有利的是,最佳化核心碼資料庫包含迴此圈類型源碼序 對應真正的、且有用的’且以階層之方式按複雜度 遞增之次序進行組織的碼片段。 預定硬體平臺可包括(例如)至少―個來自提供商副的 所⑽麵,類型之處理器,或至少一個來自提供商麵 之Power或P〇wer pCtm類型之處理器。 在更特別適用於具有-ItaniumTM類型之處理器之系統之 -可能實施例中,最佳化規則包括下列規則之至少若干項: a) 若寫入效能劣於讀取效能,則將寫入之數量最小化; b) 以浮點使用載入對(][〇ading pair)之重要性; C)调整作為迴圈體複雜度之函數的迴圈展開程度; d)使用算術運算之作業等待時間; e) 應用短向量掩蔽技術; f) 對記憶體存取(讀取、寫入、預載)使用局部性字尾; g) 定義預載距離; h)實施4階向量化,以避免若干bank)衝突; 0考慮多個變體以避免其他L2組衝突及讀/寫佇列中之 衝突; j) 考慮與不同最佳化相關之效能提高; k) 使用將錯誤預測(短向量)最小化之分枝鏈; l) 合併記憶體存取(將像素集合起來);及 m) 將對像素之處理向量化。 98614.doc -18- 200537379 在更特別適用於包含一 Power或Power PCTM類型之處理 器之系統之另一可能實施例t,最佳化規則包括下列規則 之至少若干項·· a) 重新定序讀取作業以將快取缺陷集合起來; b) 對寫入作業單獨使用預載; c) 調整作為迴圈體複雜度之函數的迴圈展開程度; d) 使用算術運算之作業等待時間; e) 對記憶體存取(讀取、寫入、預載)使用局部性字尾; f) 定義預載距離; g) 考慮多個變體以避免讀/寫佇列中之衝突;及 h) 考慮與不同最佳化相關之效能提高。 【實施方式】 首先參考圖1,該圖整體展示下述系統,其用於自動產生 农佳化碼’以經由用以最佳化及產生碼之模組8 〇之輸出端 73而提供適合在包含至少一處理器91之一預定硬體平臺9〇 上執彳于之最佳化碼。 用於產生最佳化碼之系統被調適以應用於一確定應用領 域’且其經由模組80之輸入端71而接收使用者所提交之源 碼1 7,此處術語”使用者”應廣泛理解為不僅包含終端使用 者’亦包含應用程式程式師及系統程式師。 代表處理器91在所討論之應用領域之效能方面之行為的 符號碼序列(稱為評效序列〇,被應用於用以最佳化及產生 碼之模組80之輸入端52,及分析器模組1〇之輸入端51。 藉由分析各種壤境參數之效應及評效序列之間之相互作 98614.doc -19- 200537379 用,可能定出優效能區及劣效能區來並理解其各為優、劣 之原因。評效序列不一定代表習知程式設計語言所產生之 真正碼序列。只有所測試之評效序列之一子集對應用以最 佳化使用者碼之核心碼。 可最佳化迴圈是將對變數向量所作之不同複雜程度之作 業的演算法表示進行編碼的程式結構。 核心碼或基本迴圈構成可最佳化迴圈之簡單形式。本發 φ 明之系統之模組80使其可自動產生數量顯著多於專用數學 函數庫中所可得之函數數量的最佳化核心碼。一般而言, 對於一給定核心碼可產生多個版本,每一版本係對環境參 數之某一組合之最佳化。 因此最佳化器12(圖3)中之最佳化步驟在於自動產生一 核心碼集或核心碼庫,其中該等核心碼係對目標平臺%而 最佳化,該目標平臺代表作為該應用領域之代表的功能。 最佳化步驟伴隨有在碼產生器丨8 (圖3) t產生碼之步 鲁驟’其檢查來自使用者程式之源碼,以偵測其中之可最: 化迴圈’以強制使用最佳化核心碼而非標準編譯程式所會 產生之碼。 提供構件74以將來自模組80之資訊再嵌入至評效序列ι 中〇 在最佳化及產生碼之步驟之前是在一分析器模組10中之 分析步驟,其對於目標硬體平臺90及所考慮之應用領域用 於確定待遵循之最佳化規則以獲得最佳效能。分析写模组 之輸出端57用於將最佳化規則傳輪至最佳化規則資料庫 98614.doc -20- 200537379 9 ’最佳化規則資料庫又經由傳輸構件59連接至模組8〇之最 佳化器12。 以下參考圖2對分析器模組1〇作更詳細之描述。 分析器模組10經由構件53及54接收靜態參數2及動態參 數7,該等參數被確認為處理器91之架構之函數,且更一般 而言,是所欲最佳化之目標平臺90所基於之系統之函數, 且亦是評效序列之函數。
具體言之,靜態參數2可包括每一評效序列之迴圈迭代之 數量,表存取步長及運算元類型,所用指令之類型,預載 策略,及用以定序指令及迭代之策略。 具體言之’動態參數7可包括表運算元在記憶體階層竿構 各階層中之位置,表起始位址之相對位置,及分枝歷史。 在,能分析器模組10中,測試產生器3利用與靜態參幻 及動怨參數7有關之資料來產生數量可能極龐大之變體,1 中該等參數由輸入端51及53提供 八 徨於姐灿 促I芏八羼且该等變體藉由 傳輸構件61而傳輸至變體資料庫4。 變:ΐ::4器之另一自動工具5經由傳輸構件62接收來自 庫4之變體資料,且執行以此方式準備之測試,執 ]同時在變化範圍内改變傳輸構件 數7,目絲;推u 丨促1之動您參 、、·二專輸構件63將相關量測結果傳輸i s 料庫之另㈣轉作結果資 結果資料庫6中所錯存之量測結 傳輸至分析哭8 钔又精由傳輸構件64 刀析為8,该分析器8藉由識別作 優、劣區而用於制定最佳化規則9, _等乍最為佳參數之函數的 °亥等最佳化規則9由傳 98614.doc 200537379 輸構件57傳輸至最佳化規則資料庫9。 为析裔8亦具有用於修改靜態參數2之構件54及用於修改 動您參數之構件56,例如當發現對給定參數之改變之敏感 度較小時。 刀析杰8可包含具有一任意最佳效能臨限值之過濾構 件。在此情形中,不對應最佳效能的結果資料庫中之變體, 若滿足過濾標準則仍可作為最佳者而保留於參數空間中。 以下參考圖3描述用以最佳化及產生碼之模組8〇。 取佳化裝置I2包括一用以選擇策略之模組13,其藉由用 於接收原始源碼中所識別出之核心碼的構件92而連接至用 以產生碼之模組18。用以選擇策略之模組13亦連接至用於 接收5平效序列1之構件52及用於接收最佳化規則9之構件 58。用以選擇策略之模組13在其輸出端67,對每一對應於 一所測試之評效序列之核心碼產生一個由江個版本構成之 集15,其中每一版本對於參數之某一組合是最佳的。 用以組合及組譯版本之模組14連接至用於接收最佳化規 則9之構件59,及用於接收來自用於選擇策略之模組。之資 訊的構件66,及用於接收該等複數個版本丨至江15的構件 68。杈組14經由傳輸構件93傳遞資訊,該資訊包括相應之 最佳化版本,其使用區,及用以動態地確定哪一版本最恰 當之測試適合在何處執行。 用以產生最佳化碼之模組18包括一用以偵測可最佳化迴 圈之模組20,該模組連接至用於接收使用者源碼17之構件 71。模組20之輸出端75連接至用於分解成核心碼的模組 98614.doc -22- 200537379 22,該模組22之輸出端77則連接至一用於個案分析、組譯 及再嵌入碼之模組23,該模組經由傳輸構件92連接至最佳 化斋12以傳輸所偵測之核心碼之身份。模組23亦經由傳輸 構件93接收描述相應最佳化核心碼之資訊。模組亦連接 至用於提供最佳化碼19之構件73。 在一有利之實施例中,用以最佳化及產生碼之模組8〇包 括一最佳化核心碼之資料庫16。組合及組譯模組14由傳輸 φ 構件79連接至最佳化核心碼資料庫16以將下列資料儲存於 該資料庫中:最佳化核心碼,包括最佳化版本,其使用區, 及用以動態地確定哪一版本最恰當之測試適合在何處執行 之資訊。在此變體中,用於個案分析、組譯及嵌入碼之模 組23亦藉由傳輸構件72連接至最佳化核心碼資料庫16,以 便右所搜尋之核心碼已儲存於該資料庫丨6中則無需調用最 佳化器12而接收描述一最佳化核心碼之資訊。 如圖3中所可見,用於個案分析、組譯及嵌入碼之模組23 籲 另外包括用於將在該模組23中所發現的,但在最佳化核心 碼 > 料庫16或評效序列中沒有相應身份的核心碼添加到評 效序列1中之構件74。 圖4展示一特定實施例,由於最佳化器丨2仍與存在最佳化 核心碼資料庫16之圖3中所展示之變體相同,故其未展示於 該實施例中。 在此實施例中,用以產生碼之模組丨8在用以個案分析、 組譯及碼嵌入之模組23之輸出端73,產生一再組織源碼 1 9 ’習知之用以程式準備之工具8丨、82隨後對該再組織源 98614.doc -23- 200537379 碼19作處理,以獲得對目標平臺9〇而最佳化之二進位碼83。 圖4展示一非常容易實施之實施例。如上所述在用以最佳 化及產生碼之模組80中對原始使用者源碼17作再組織,再 組織之方式是:以對子程式之呼叫替代其可最佳化迴圈, 將來自最佳化核心碼資料庫16的對應子程式之碼嵌入再組 織源碼19中。以此方式再組織源碼19則含有在通過包括一 編譯程式8 1及一鏈接編輯程式8 2之習知鏈條時產生適用於 φ 硬體平! 90之最佳化二進位碼83所需之全部内容。 在可旎之變體中,最佳化核心碼資料庫16之最佳化核 心碼之源碼可在編譯步驟中直接用作附加源函數庫。此在 圖4中以連接最佳化核心碼資料庫16至編譯程式81之虛線 箭頭85表示。因此此變體可避免直接將最佳化核心碼之源 碼嵌入再組織源碼中,且使模組18内之產生步驟變得更容 易實施。 圖5展示構成圖4中所示之實施例之一變體之實施例。 _ ® 5之龍利用某些作業系統所提供之功能,藉此以可執 行進位碼之形式安裝函數庫,程式可肖由執行時之動態 鏈接編輯而存取該等函數庫。 在圖5之變體中,不再需要將來自最佳化核心碼資料庫16 之馬瓜入再組織源碼丨9中。然而,須藉由編譯程式181及安 裝杈組182在目標平臺9〇上安裝含有最佳化核心碼之所有 功能的動態函數庫。可使用單個編譯程式同時充當圖5中之 扁澤耘式81及1 81。在圖5之此變體中,對每一目標平臺僅 而—人女褎作業,因此就最佳化處理程序之整體處理而言 98614.doc •24- 200537379 此變體更經濟。 用於產生最佳化碼之本發明 • ^ 參 ’月之糸統特別適於三個應用領 域·科學計算,訊號處理,及圖形處理。 此4二個領域所使用之碼 ’主兄夕個對實施之目的是重要 的特禮支CHAR1至CHAR4。 .CHAR1:迴圈類型結構(或”巢套迴圈")構成彼等耗費最 大量執行時間之碼之部分。 • / CHAR2:所使用之資料結構多數是多維表類型且以非 常規則之模式加以存取(列、行、區塊等等)。 • CHAR3:迴圈(或巢套迴圈)一般由獨立的且可並行執 行的迭代所構成。 .CHAR4··迴圈體—般由___算術表達式序列構成且對應 對大量資料之統一(或准統一)的計算。 當然,雖然科學計算、訊號處理及圖形處理此等三個領 域具有若干相同之4,但是亦呈現某些大的差因此, • 在訊號處理領域,複數類型之資料構成需要特定最佳化之 非常重要之資料類型,而此類型資料之重要性在另外兩個 領域中則較小。圖形處理之非常獨特之處是使用一特定類 型之資料,即像素,以及使用特別算術。另外,在圖形中, 與二維流相關之資料結構及演算法具有根本之重要性。 以上四個特徵(CHAR1至CHAR4)對最佳化碼具有非常強 烈的影響,且使吾人可開發完全專用技術: • CHAR 1 3最佳化集中於迴圈類型結構,該等迴圈類型 結構有兩個主要優點··重複性(及可預測性)及表示之緊密 98614.doc -25- 200537379 性0 r使用之侖” 分執行時間(或由於快取記憶 體使用之愈盈廣泛, 性,可易於龍\ ^分)之表存取的規則 性,可易於對其分析並最佳化。 .CHAR3⑽圈及㈣之巢套内的迭代之獨立性,使得 ===有之特徵而…式,在作為表存取 I數之迭代空間中使用(最佳化)路徑。可能注意到,存取 -表之N個給“素可以N!種不同之方式(次序)實施。 二由於㈣表達式之樹形表示,迴圏體按照算 術表達式之簡單結構使得可能使用系統的及階層架構的方 法0 分析步驟保持為-實質上的實驗性步驟,在該步驟 後需要: •已確定該架構之強大與薄弱之處; •知道如何將效能與碼結構關聯起來;及 .已識別出良好之最佳化策略,該等策略可為與該碼相 關之各種參數之函數。 如上所述,起點是"源類型"碼片段之集,該等”源類型,, 碼片段簡單但普通,且通常稱為”評效序列”。此等碼 具有迴圈類型結構,且術語”源類型”用來表示作業係在言 階層上而非組譯階層上規定的。 以階層架構,且按迴圈體中之碼複雜度遞增之次序組織 該等碼片段,組織方式如下: •第〇階層評效序列:此階層上測試單個作業,即迴圈體 98614.doc -26 - 200537379 包括單個作業:自一表中讀取元素,將元素寫入 ::點:加,等等。此等作業對應由高度等於。二二:之 單個算術表達式所構成之迴圈體。 •第1階層評效序列:此階層上考慮並測試兩個第0階層 Π業之組合:自一表讀取且寫入—表中,自兩個不心 表讀取,讀取及在表中作相加,等等。此等作業__由 一南度等W之樹所代表之單個算術表達式所構成,或由兩
個各由高度等於0之樹所代表之算術表達式所構成之 體。 •第2階層評效序列··此階層上考. 艾肩〗5式兩個第1階声 之作業或三個第〇階層之作業之組合:自三個不同之表^ 取’讀取並在兩個表中逐元素相加,及將結果寫入第三: 表中,等等。 •第ΚΡ皆層評效序列:紅層可易於自之前階層之 而進行定義。 3 所有第0階層評效序列對應,,虛擬”之碼片段,即其不 ’’真正,,迴圈。 义 此按複雜度遞增之階層組織形式亦應用於最佳化步驟 中0 以此方式定義之評效序列集是無限的。 此等評效序列使用兩類不同參數: •靜態參數:此等參數係靜態地定義(即在執行之前且獨 立於執行)。此等靜態參數又細分為兩大子類:高階靜態參 數(迴圈迭代之數量,表存取步長,運算元類型······),及低 98614.doc -27- 200537379 階靜態參數(特定指令之使用,指令定序’等等)。 動一數_此等參數係在執行迴圈時定義。舉例而言, 其包括·表運鼻疋在印悟雕 °己隐體階層架構中之位置,表起始位 址之相對位置......。 此等兩類參數之使用太泞丄 用万式大不相同:靜態參數用以產生 與下述變體及/或最佳化姓人 、、"σ的不同測試碼片段,而動態參 數則僅在測試臺上執行時使用。 南階靜悲參數相對有限曰鲁併 貫貝上對應於由高階語言(如
Fortran或〇所表達且未含盥 〜㈢‘處理态相關之專用性的迴 圈及表之習知參數。 低階靜態參數使可能者磨伽老m 考慮與處理器(架構)及指令定序(目 才示碼產生器)相關之所有 ^ 、语 用性。汗效序列係高階抽象物(以 源浯言定義,且獨立於 4 ^ 、不处理器之架構),且具體不包含 任何取佳化。為在一仏令由 w 、、’〇處理态上對其測試,須產生並最 隹化其相應之組譯 lL . l 此產生過程中自動產生若干變 體(組譯指令)。盘ρη ^ 〃、同—坪效序列相關之所有變體係語義上 興子刀始評效序歹,丨f % Μ , ^ ^碼片段。執行並量測的係此等變 Π Γ應於不同之碼最佳化技術(即對應於低階靜 二丈)。此等最佳化可不參考評效序列之具體結構而以抽 象方式疋義’Μ構成低階靜態參數之主要部分。 低階靜態參數包括: •使用組譯指今·、、店邮ρ 列而進行實施。^單個作業可使用不同指令序 令 ^而S,此處有必要處理使用資料及指 戰之不同之可能的策略; 98614.doc *28- 200537379 迴圈體之結構:(不同程度地)展開迴 •迴圈體之定序:斟袖础山 對迎圈體中之指令進行定序(預載距 離,向量化,將快取錯失集合起來,處理仔列之間之衝 突);及 •迭代之定序:(不同深度之)軟體流水線。 在。午夕編#程式巾’ ±述低階靜態參數對應於用於以明 確方式實施所欲之最佳化之編譯時選項。 測試產生器3之作用θ太 、, 用疋產生,百先對應於高階靜態參數 σ、存取步長U亦對應於低階靜態參數之上述不同變體。 /注意對於第1階層評效序列,將被產生並分析之變體之 =數極大’可以百萬計。儘管如此,該產生及分析處理程 序仍可非常簡單地自動進行。 在操作器5及分把$。+ ^ 析為8中,其目的是測試不同變體之效能 〜擇可能之最佳變體及/或最佳化。 此步驟奄口去裟立、 “ 生大量儲存於結果資料庫6中之結果。此 寻貫驗係以階層趣 lL 層木構方式且與分析步驟相交錯而進行的: 囚此,起如夕每 °貝驗係對第〇階層評效序列之變體實施。在此 =貫驗結束時,可以所獲得之結果之函數對不同變體 層上對其不1。因此可立即消除若干變體且在之後之階 合燋炸二Γ予考慮。此使限制所需實施之實驗之數量的組 。爆邱成為可能。 分析結果之舟酿、 量度(效, 看似乎很容易實施,因為僅使用一個 數,該/。事實上,最佳變體之選擇一般嚴重依賴於參 x处1程序大部分之複雜度即源於此。 98614.doc -29- 200537379 第一次分類可藉由基於架構之規格計算每一評效序列之 最佳效能而非常簡單地實施。不幸的是,架構與碼(包含簡 單如第〇階層及第!階層評效序列之碼片段)之間之複雜的 相互作用立即產生若干困難:此將使作為各參數之函數的 效能變化的數字變得複雜。此等複雜行為可先使用影像處 理次异法進行分析,再藉由使一給定變體符合一定參數範 圍而進行合成。因此,分析步驟不僅產生一份對每—評效 • 序列給出最佳(且唯一)變體及最佳化技術之清單,而且對每 一評效序列確定出一份參數範圍清單,且對每一範圍皆指 定最佳變體及最佳化技術:正是此種資訊吾人稱之為”最佳 化規則”。 文到測試之評效序列集是所有評效序列之一非常小之子 集。將隨後用於最佳化之目的之此集係稱作,,參考評效序列 集!,。 實務上,設定”合理”之最佳化目標非常重要··不惜任何 籲代價搜尋最佳解可導致極大量之變體,而放寬最佳限制條 件’並將效能之滿意範圍設在最佳解之約5%至1〇%之内, 則將使單一變體可使用於非常寬之參數範圍内。為此,吾 人實施過濾,如將臨限值設為最佳效能之9〇0/〇。 貫務上,為找出主要最佳化技術並使之生效,僅測試並 分析第0、第1及第2階層之評效序列已足夠。參考評效序列 之集一般不含有高於第3階層之序列。 待實施之實驗之數量迅速變得很大,特別是在高於第2 階層以後。 98614.doc -30- 200537379 △該等實驗整體可完美地並行作業:測試可在⑽或咖 台機器上並行執行4並行化性質極其有帛,且使在一可 接X之時間長度内完成系統搜尋成為可。 此步驟可完全自動完成,且用以驗證結果之品質及一致 性之程序亦可自動完成。所需之人卫介人僅在於識別來自 分析用以驗證品質及-致性之程序所自動產生之結果 誤及/或異常。 a
在分析步驟之最後,目的是獲得非常大量之簡單碼片 段’稱作"核叫”,該碼被針對目標架構而特別最 佳化,最佳化處理程序實質上依靠分析步驟之最後所發現 之最佳化技術。 嚴格而f,"核心碼"是迴圈類型源碼彳列且構成一般稱 作評效序狀子集。與評效序列Μ,核d對應於^正 且有用之碼片段。與評效序列相同,其以階層之形式,按 複雜度遞增之次序進行組織。 此等核心碼之產生及/或最佳化分下列四個步驟: •與一或多個參考評效序列之關聯:對於最簡單之核心 碼,核心碼與評效序列之間存在直接對應,而對於較複雜 之核心碼,核心碼需分解為複數個參考評效序列。此關聯 及/或分解係作為核心碼迴圈體之特徵之函數而於源階層 實施,其中核心碼迴圈體之特徵有:表數量,表存取步長0, 等等......。 •產生碼及/或定序指令及/或最佳化指令:現在使用分析 步驟中所偵測到之最佳化技術(作為對應評效序列2函 98614.doc -31 - 200537379 用於為核心碼產生及/或最佳化碼。 可產生若干作為參數之函數之可 暫存③配置··所用之最佳化技術中有許多大大增加暫 子态可侍性之壓力。在此等情形中,配置所有可 器之組織方式是恰當的。 暫存 •貫驗及/或驗證··用分析步驟中之測試台對所產生並最
&Γ之核Γ碼進行測試。在此步驟之最後,建構了核心碼 效月b之一簡單模型。 與編譯程式巾利之習知最佳化相比,此處所用之最佳 Π报大不同:首先’其直接導自-詳細之用以估算效能 处軸序(在分析步驟中實施),其次,由於其離線執行, 時間"限制"’因而複雜的多且具有較高效能(特 別對於暫存器之配置)。
數),並直接將該技術應 對於任意給定核心碼, 版本。 多考坪效序列及產生規則使得可能首先考慮架構之 斤有精細特被(量測之作業特徵而非理論特徵),其次可作為 參數之函數選擇不同版本。 / …、 ^驟之最後,建構了一最佳化核心碼資料庫16,該資 ,、、庫16不僅含有所產生之核心碼,亦含有與作為各個參數 之函數的其效能相關的資訊。亦使用與對評效序列所實施 之^相同之程序對每—核心、碼進行測試。 ’矛力上’最佳化核心石馬資料庫16以系統且徹底之方式包 括第1、2、3、4、以比a 管旦 5 P自層之所有核心碼。建構此資料庫之計 面之成本很大,但是,與分析效能之步驟相同,此 98614.doc -32- 200537379 建構過程可非常高效地並行實施。 使用者碼最佳化分下列三個步驟: 偵測可最佳化迴圈(模組2〇):此在於辨認源碼中可被分 - 解為若干核心碼之迴圈。此步驟利用了與自動並行化及/或 向量化所用技術非常相似之技術。必要時,為使迴圈以最 利於最佳化之形式出現,可對該源碼進行重組。 •分析可最佳化迴圈及分解為核心碼(模組22)··此依賴於 φ 與將核心碼最佳化所用之彼等技術相近之用於組態匹配及 分解的技術,且迴圈分解為一核心碼序列。 •組#並嵌入碼(模組23):將用於分解目的之各個核心碼 組譯並嵌入源碼中。 一:k將此分解程序參數化為原始源迴圈之特徵之函數。 所欲實現之最佳化可·· •整合於現存編譯鏈中之一預處理器中,且此以透明方 式貫現,即無需存取編譯程式之碼;或 # •直接整合於編譯程式中,當然此需要修改編譯程式之 碼。 如上文參考圖3所述,分析步驟之最後獲得了一定數量之 最佳化規則:此等規則係評效序列及參數範圍之函數。一 可此之變體不經中間核心碼步驟,而是直接將可最佳化迴 圈與#效序列關聯’並直接將最佳化規則應用於可最佳化 迴圈而不利用儲存於最佳化核心碼資料庫16中之核心碼。 此’變體比利用核心碼簡單且使最佳化規則可得到更靈活 之使用。然而’因為其實質上是線上實施,所以所得到之 98614.doc -33- 200537379 因而所獲得之效能必然較差。 系統已對一定數量之”可最佳化 變體之數量必定少的多, 在最佳化步驟之最後: 迴圈產生最佳化形式,由於該等最佳化形式需要分解作 業’,故其必然不可直接在核心、碼資料庫中獲得。此等最佳 化形式自身可儲存於最佳化核心碼資料庫16中並在隨後再 使用。因此,核心碼資料庫16由此訓練形式而自動得到豐 【圖式簡單說明】 圖1是展示組成根據本發明之用以自動產生最佳化碼之 系統的模組集的方塊圖; 圖2是更詳盡展示可實施於圖丨系統中之效能分析器模組 之結構的方塊圖; 圖3是更詳盡展示可實施於圖丨系統中之用於最佳化及產 生碼之模組之結構的方塊圖; 圖4是展示用以產生再組織源碼,以及獲得對相應目標平 s而最佳化之二進位碼的模組之一第一實施例的方塊圖;及 圖5是展示用以產生再組織源碼,以及獲得對相應目標平 室而最佳化之二進位碼的模組之一第二實施例的方塊圖。 【主要元件符號說明】 1 評效序列 2 靜態參數 3 測試產生器 4 變體資料庫 5 操作器 98614.doc -34- 200537379
6 結果資料庫 7 動態參數 8 分析器 9 最佳化規則 12 最佳化器 13 策略選擇模組 14 組合及組譯模組 15 版本集 16 最佳化核心碼資料庫 17 使用者碼 18 碼產生器 19 最佳化碼 51 構件 52 構件 53 構件 54 構件 55 構件 56 構件 57 輸出端、傳輸構件 58 構件 59 構件 61 傳輸構件 62 傳輸構件 63 傳輸構件 98614.doc -35- 200537379
64 66 67 68 71 72 73 74 77 79 81 82 83 85 90 91 92 93 181 182 傳輸構件 構件 輸出端 構件 構件、輸入端 傳輸構件 輸出端、構件 構件 輸出端 輸出端 傳輸構件 編譯程式 鏈接編輯程式 最佳化二進位碼 虛線前頭 硬體平臺 處理器 構件 傳輸構件 編譯程式 安裝程式 98614.doc -36-

Claims (1)

  1. 200537379 十、申請專利範圍: 1 · 一種自動對各使用者所提交之源碼(17)進行作業以產生 最佳化碼(19)之系統,其中該最佳化碼適合在一包括至少 處理器(91)之預定硬體平臺(9〇)上執行,且用於一預定 應用領域;該系統之特徵在於其包括:用以接收稱作評 效序列(1)之多個符號碼序列之構件(5 1、52),其中該等 符號碼序列代表該處理器(91)在該預定應用領域之效能 方面之行為;用以接收基於該預定硬體平臺(9〇)、其處理 器(91)及该等評效序列(!)而定義之多個第一靜態參數(2) 之構件(53);用以接收亦基於該預定硬體平臺(9〇)、其處 理器(91)及該等評效序列(1)而定義之多個動態參數(乃之 構件(55); —用以自使用該等評效序列(1)、該等靜態參 數(2)及该等動態參數(7)而進行之對效能之各種測試及 篁測而建立多個最佳化規則(9)之分析裝置(1〇); 一用以 最佳化及產生碼之裝置(80),其先接收該等評效序列 (1) ’再接收該等最佳化規則(9)以檢查該使用者源碼 (17) ’痛測各可最佳化迴圈,將其分解為若干核心碼,並 組#及嵌入碼以傳遞該最佳化碼(19);及用以將來自該用 以產生及最佳化碼之裝置(8〇)且與該等核心碼相關之資 訊再嵌入回該等評效序列(丨)之構件(74)。 2.如睛求項1之系統,其特徵在於該分析裝置包括一測 。式產生器(3)’其首先連接至該用以接收多個評效序列之 構件(51),再連接至該用以接收多個靜態參數之構件(53) 以自動產生大量測試變體,該等測試變體經由傳輸構件 98614.doc 200537379 (υ傳輸至一變體資料庫⑷中儲存起纟操作器⑺, 其1*先連接至用以接收儲存於該變體f料庫⑷中之該等 測試變體之傳輸構件(62),再連 ;丹連接至该用以接收多個動態 :數之構件(55),以在該等動態參數⑺之—變化範圍内 相試變體並產生結果,該等結果由傳輸構件(63) 一結果貧料庫(6)中健存起來;及-分析器(8),其 連接至該傳輸構件(64)以接收儲存於該結果資料庫⑻中 之該等結果’分析該等結果,並自此導出最佳化規則, ㈣最佳化規則由傳輸構件(57)傳輸至_最佳化 料庫(9)中。 3. 如請求項1之系統,其特徵在於該分析器⑻包含具有一任 意最佳效能臨限值之㈣構件,以使若該結果資料庫令 之一變體滿足該等過濾、標準,則認為其即該參數空間中 之最佳者。 4. 如明求項2或3之系統,其特徵在於該分析器⑻進一步包 括用以修改該等靜態參數(2)之構件(54)及用以修改該等 動態參數(7)之構件(56)。 5. 如明求項1至4中任—項之系統,其特徵在於該用以最佳 化及產生碼之農置⑽包括一用以產生最佳化碼之褒置 〇8)及:佳化器〇2),該最佳化器包括一策略選擇模組 (13)’該策略選擇模組(13)首先連接至用於接收該原始源 碼中所識別出之各核心碼的構件(92),再連接至該用以接 收多個評效序列⑴之構件(52),再連接至用以接收各最 佳化規則⑼之構件(58),以對每—對應於—受測試評效 98614.doc 200537379 序列之核心碼產生複數個版本(丨5),其中每一版本在一定 芩數組合下是最佳的;及一組合及組譯模組(14),該組合 及組譯模組(14)連接至用於接收各最佳化規則(9)之構件 (59) ’用於接收來自該策略選擇模組(13)之資訊之構件 (66),及用於接收該等複數個版本之構件,以經 由傳輸構件(93)傳遞包括下列内容之資訊:相應之各最佳 化版本,其使用區,及在適當時機用以動態地確定哪一 版本最恰當所需執行之測試。 6·如請求項5之系統,其特徵在於其包括一最佳化核心碼資 料庫(16),且在於該組合及組譯模組(14)係藉由傳輸構件 (79)而連接至該最佳化核心碼資料庫(16)以將資訊儲存 於該最佳化核心碼資料庫中,該資訊包括該等最佳化版 本,其各使用區,及在適當時機用以動態地確定哪一版 本最恰當所需執行之測試。 如請求項!至6中任一項之系統,其特徵在於該用以最佳 化及產生碼之裝置(8G)包括—最佳化器(12)及—用以產 生最佳化碼之裝置(18),該裝置包括一連接至用以接收使 用者源碼⑼之構件⑺)之用以谓測多個可最佳化迴圈 的模組(20),-用以將其分解為若干核心碼之模組⑵), 及一用以個案分析、組譯及碼嵌入之模組(23),其經 輸構件(92)連接至該最佳化器(12)以傳輸該所谓測到之 核心碼之身份,及連接至用以接收描述該相應最佳化核 心碼之该資訊的傳輸構件(93),該用以個案分析 碼彼入之模組⑼亦連接至用以提供最佳化碼之構件 986I4.doc 200537379 (73)。 8·如請求項6及7之系統,其特徵在於該用以個案分析、組 譯及碼嵌入之模組(23)亦連接至該最佳化核心碼資料庫 (16) ’以便若該所搜尋之核心碼已儲存於其中則無需調用 該最佳化器(12)而接收描述一最佳化核心碼之資訊。 9·如請求項8之系統,其特徵在於該用以個案分析、組譯及 碼以入之模組(23)進一步包括用於將在該用以個案分 析、組譯及碼嵌入之模組(23)中所發現的,但在該最佳化 核心碼資料庫(16)及該等評效序列中均未有相應身份之 核心碼添加至該等評效序列(1)中的構件(74)。 10·如請求項6、8及9中任一項之系統,其特徵在於其包含一 、、’扁#私式(82)及一鏈接編輯程式(82),其用以接收來自該 用以最佳化及產生碼之裝置(8〇)之再組織源碼(丨9),並產 生適用於5亥硬體平臺(9〇)之最佳化二進位碼(83)。 11 ·如明求項1G之系統,其特徵在於其包含用於將該等最佳 化核心碼之該源碼自該最佳化核心碼資料庫(Μ)傳輸至 該編譯程式(81)的構件(85)。 12·如請求項1()之系統,其特徵在於其包含—編譯程式(! 及=裝模組⑽),其用以將一動態函數庫安裝於該硬 $平堂(9G)上,該函數庫含有該等最佳化核心喝的所有功 用 13.==。任一項之系統,其特徵在於該預定應 應用 1 4·如請求項〗至〗2中任一 項之系統,其特徵在於該預定 98614.doc 200537379 領域是訊號處理。 15·如請求項丨至12中任一項之系統,其特徵在於該預定應用 領域是圖形處理。 • 16·如請求項丨至15中任一項之系統,其特徵在於該等評效序 歹u (1)包括一簡單且一般之迴圈類型之碼片段之集,其中 該等碼片段係以一源類型語言而規定的,且係以一階層 架構之形式,按照該迴圈體之碼之複雜度遞增之次序而 ^ 進行組織。 17·如請求項16之系統,其特徵在於該等評效序列(1)包括第〇 階層之評效序列,其中僅對一單一作業進行測試,且該 單一作業對應於一由一高度等於〇之樹所代表之一單一 异術表達式所構成之迴圈體。 18·如請求項17之系統,特徵在於該等評效序列包括第丨階層 之”平效序列,對此考慮並測試:兩個第〇階層之作業之組 合;及對應於下述迴圈體之第〗階層評效序列作業,該等 • Μ圈體由1高度等於1之樹所代表之單-算術表達^ 構成,或者由兩個各由一高度等於〇之樹所代表之算術表 達式構成。 19.如請求項18之系、統,其特徵在於該等評效序列⑴包括多 個第1階層之評效序列,對此考慮並測試兩個第^階層之 作業或二個第〇階層之作業的組合。 2〇· : 4求項16至19中任-項之系統,其特徵在於該等靜態 參數⑺具體包括每-評效序列之迴圈迭代之數量,表存 取步長及各運算元類型,所用各指令之類型,各預載策 98614.doc 200537379 略’及用於定序各指令及迭代之多個策略。 21·如請求項16至2〇中任一項之系統,其特徵在於該等動態 茶數(7)具體包括各表運算元在該記憶體階層架構之該等 階層中之位置,各表起始位址之相對位置,及分枝歷史。 22·如請求項6、8及9中任一項之系統,其特徵在於該最佳化 核心碼資料庫(16)包含多個迴圈類型源碼序列,其對應於 真正、且有用的,且以階層之方式按複雜度遞增之次序 進行組織的多個碼片段。 23·如請求項丨至12中任一項之系統,其特徵在於該預定硬體 平$ (90)包括至少一卩⑽“^類型之處理器。 24·如請求項1至12中任一項之系統,其特徵在於該預定硬體 平置(9〇)包括至少一Power或Power PC類型之處理写。 25.如請求項13至15中任一項及請求項23之系統,其特徵在 於該等最佳化規則(9)包括下列規則中之至少若干項·· a) 若寫入效能劣於讀取效能,則將各寫入之數量最小化; b) 以浮點使用各載入對之重要性; c) 調整作為該迴圈體之複雜度之一函數的一迴圈展開程 度; 歼主 d) 使用各算術運算之作業等待時間; e) 對各短向量應用掩蔽技術; f) 對各記憶體存取(讀取、寫入、預載)使用局部性字尾; g) 定義各預載距離; h) 實施4階向量化,以避免若干L2組衝突; i) 考慮多個變體以避免其他L2組衝突及讀/寫仔列中之衝 98614.doc 200537379 突; j)考慮”不同最佳化相關之效能提高; )使用將各錯#預測(短向量)最小化之多個分枝鏈; l) 合併各記憶體存取(將各像素集合起來);及 m) 將對各像素之處理向量化。 26·如请求項13至15中任一項及請求項%之系統,其特徵在 於該等最佳化規則(9)包括下列規則中之至少若干項·· a) 重新定序各讀取作業以將各快取缺陷集合起來; b) 僅對各寫入作業使用預載; c) 凋整作為該迴圈體之複雜度之一函數的各迴圈展開程 度; d) 使用各异術運算之作業等待時間,· e) 對各記憶體存取(讀取、寫入、預載)使用局部性字尾; f) 定義各預載距離; g) 考慮多個變體以避免各讀/寫仔列中之衝突;及 h) 考慮與不同最佳化相關之效能提高。 98614.doc
TW094101190A 2004-01-14 2005-01-14 A system for automatically generating optimized code TW200537379A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0400291A FR2865047B1 (fr) 2004-01-14 2004-01-14 Systeme de generation automatique de codes optimises

Publications (1)

Publication Number Publication Date
TW200537379A true TW200537379A (en) 2005-11-16

Family

ID=34684970

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094101190A TW200537379A (en) 2004-01-14 2005-01-14 A system for automatically generating optimized code

Country Status (17)

Country Link
US (1) US7979852B2 (zh)
EP (1) EP1704476B8 (zh)
JP (1) JP4823075B2 (zh)
CN (1) CN100388203C (zh)
AR (2) AR047360A1 (zh)
AT (1) ATE428974T1 (zh)
CA (1) CA2553133A1 (zh)
CY (1) CY1109218T1 (zh)
DE (1) DE602005013908D1 (zh)
DK (1) DK1704476T3 (zh)
ES (1) ES2326126T3 (zh)
FR (1) FR2865047B1 (zh)
PL (1) PL1704476T3 (zh)
PT (1) PT1704476E (zh)
TW (1) TW200537379A (zh)
UY (1) UY28703A1 (zh)
WO (1) WO2005073851A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI755112B (zh) * 2020-10-23 2022-02-11 財團法人工業技術研究院 電腦程式碼之優化方法、優化系統及應用其之電子裝置

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546588B2 (en) * 2004-09-09 2009-06-09 International Business Machines Corporation Self-optimizable code with code path selection and efficient memory allocation
WO2006064409A1 (en) * 2004-12-13 2006-06-22 Koninklijke Philips Electronics N.V. Compiling method, compiling apparatus and computer system for a loop in a program
US9378002B2 (en) * 2006-12-22 2016-06-28 Core Wireless Licensing S.A.R.L. System, method, apparatus and computer program product for providing memory footprint reduction
US20080244607A1 (en) * 2007-03-27 2008-10-02 Vladislav Rysin Economic allocation and management of resources via a virtual resource market
US8689194B1 (en) * 2007-08-20 2014-04-01 The Mathworks, Inc. Optimization identification
US8370823B2 (en) * 2007-08-27 2013-02-05 International Business Machines Corporation Device, system, and method of computer program optimization
JP4339907B2 (ja) * 2007-10-24 2009-10-07 株式会社日立製作所 マルチプロセッサ向け最適コード生成方法及びコンパイル装置
CN101911047A (zh) * 2007-11-06 2010-12-08 瑞士信贷证券(美国)有限责任公司 根据服务水平协议预测并管理资源分配
US8782627B2 (en) * 2007-11-29 2014-07-15 Microsoft Corporation Path specializations for runtime code with phase behavior
US20090193402A1 (en) * 2008-01-28 2009-07-30 Guy Bashkansky Iterative Compilation Supporting Entity Instance-Specific Compiler Option Variations
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US8219358B2 (en) * 2008-05-09 2012-07-10 Credit Suisse Securities (Usa) Llc Platform matching systems and methods
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
WO2010118416A2 (en) * 2009-04-10 2010-10-14 Vision Genesis, Inc. Software database system and process of building and operating the same
CN101872301A (zh) * 2009-04-24 2010-10-27 深圳富泰宏精密工业有限公司 测量程序优化系统及方法
US8972961B2 (en) * 2010-05-19 2015-03-03 International Business Machines Corporation Instruction scheduling approach to improve processor performance
US8819652B2 (en) * 2010-07-30 2014-08-26 General Electric Company System and method for parametric system evaluation
US20120124555A1 (en) * 2010-11-11 2012-05-17 Codekko Software, Inc. Optimization of Compiled Control Objects
US8572594B2 (en) 2010-12-22 2013-10-29 Microsoft Corporation Invasion analysis to identify open types
US20140040858A1 (en) * 2011-04-20 2014-02-06 Freescale Semiconductor, Inc. Method and apparatus for generating resource efficient computer program code
US8423986B1 (en) * 2011-10-12 2013-04-16 Accenture Global Services Limited Random utility generation technology
US9185513B1 (en) * 2011-12-02 2015-11-10 Google Inc. Method and system for compilation with profiling feedback from client
US9613083B2 (en) 2012-04-26 2017-04-04 Hewlett Packard Enterprise Development Lp Nesting level
JP2013235386A (ja) * 2012-05-08 2013-11-21 Internatl Business Mach Corp <Ibm> 最適化装置、最適化方法、及び最適化プログラム
KR101940265B1 (ko) * 2012-05-23 2019-01-18 충남대학교산학협력단 명령어 집합 아키텍처 자동 맵핑 기법
US9244677B2 (en) * 2012-09-28 2016-01-26 Intel Corporation Loop vectorization methods and apparatus
CN103901810B (zh) * 2012-12-31 2017-04-12 施耐德电器工业公司 可编程控制器用户应用的优化系统及方法
US9268541B2 (en) 2013-03-15 2016-02-23 Intel Corporation Methods and systems to vectorize scalar computer program loops having loop-carried dependences
US9158511B2 (en) * 2013-05-20 2015-10-13 Advanced Micro Devices, Inc. Scalable partial vectorization
WO2014200501A1 (en) * 2013-06-14 2014-12-18 Intel Corporation Compiler optimization for complex exponential calculations
GB2521367A (en) 2013-12-17 2015-06-24 Ibm Adaptable and extensible runtime and system for heterogeneous computer systems
JP5988444B2 (ja) 2014-02-14 2016-09-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
CN103760965B (zh) * 2014-02-21 2016-08-17 中南大学 一种能量受限嵌入式系统的算法源程序节能优化方法
CN104239055A (zh) * 2014-09-15 2014-12-24 大连楼兰科技股份有限公司 检测软件代码复杂度的方法
US9706013B2 (en) * 2014-09-17 2017-07-11 Oracle International Corporation Mobile runtime conditional sections for surveys
US9489181B2 (en) * 2014-10-09 2016-11-08 National Instruments Corporation Correlation analysis of program structures
CN105988855B (zh) * 2015-02-16 2019-11-12 龙芯中科技术有限公司 即时编译参数优化方法及装置
EP3376373A1 (en) * 2017-03-15 2018-09-19 Siemens Aktiengesellschaft A method for deployment and execution of a machine learning model on a field device
JP7407192B2 (ja) * 2018-08-09 2023-12-28 イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置
US10956137B2 (en) * 2019-06-10 2021-03-23 International Business Machines Corporation Compiling source code using source code transformations selected using benchmark data
KR102132933B1 (ko) * 2019-09-09 2020-07-10 국방과학연구소 소프트웨어의 제어 흐름 보호장치 및 그 방법
CN110727437B (zh) * 2019-09-10 2024-04-09 平安普惠企业管理有限公司 代码优化项获取方法、装置、存储介质及电子设备
US11720351B2 (en) * 2020-03-17 2023-08-08 Onspecta, Inc. Microkernel-based software optimization of neural networks
CN113286148A (zh) * 2020-11-25 2021-08-20 常熟友乐智能科技有限公司 一种基于大数据和物联网的视频设备优化方法、装置及服务器
CN117908902A (zh) * 2024-03-12 2024-04-19 苏州元脑智能科技有限公司 性能优化方法、装置、计算机设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219130A (ja) * 1986-03-20 1987-09-26 Fujitsu Ltd プログラムの最適化方式
JPS62271024A (ja) * 1986-05-20 1987-11-25 Mitsubishi Electric Corp 最適化処理方式
JPH02176938A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd 機械語命令最適化方式
JPH03157731A (ja) * 1989-11-16 1991-07-05 Hitachi Ltd チユーニング支援システム
DE4112090A1 (de) * 1991-04-12 1992-10-15 Siemens Ag Verfahren zum maschinellen erstellen eines aus mehreren programmteilen bestehenden programmes
US5815721A (en) * 1996-04-25 1998-09-29 Hewlett-Packard Company Method and apparatus for optimizing complex control structures using abstract web patterns
JPH09319587A (ja) * 1996-05-30 1997-12-12 Nec Corp 計測情報を使ったポストオプティマイズによるプログラムの生成方式
JP2000078262A (ja) * 1998-08-31 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 携帯電話端末
US6895580B2 (en) * 2001-09-20 2005-05-17 International Business Machines Corporation Expression reduction during compilation through routine cloning
JP2003173262A (ja) * 2001-12-06 2003-06-20 Hitachi Ltd プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US7975256B2 (en) * 2004-06-30 2011-07-05 International Business Machines Corporation Optimizing application performance through data mining

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI755112B (zh) * 2020-10-23 2022-02-11 財團法人工業技術研究院 電腦程式碼之優化方法、優化系統及應用其之電子裝置

Also Published As

Publication number Publication date
EP1704476B1 (fr) 2009-04-15
UY28703A1 (es) 2005-07-29
CA2553133A1 (en) 2005-08-11
FR2865047A1 (fr) 2005-07-15
EP1704476B8 (fr) 2009-09-23
US7979852B2 (en) 2011-07-12
FR2865047B1 (fr) 2006-04-07
WO2005073851A3 (fr) 2006-05-04
CY1109218T1 (el) 2014-07-02
US20080034360A1 (en) 2008-02-07
AR049794A1 (es) 2006-09-06
WO2005073851A2 (fr) 2005-08-11
PT1704476E (pt) 2009-07-21
PL1704476T3 (pl) 2010-01-29
JP4823075B2 (ja) 2011-11-24
ES2326126T3 (es) 2009-10-01
CN100388203C (zh) 2008-05-14
AR047360A1 (es) 2006-01-18
JP2007518176A (ja) 2007-07-05
ATE428974T1 (de) 2009-05-15
DE602005013908D1 (de) 2009-05-28
DK1704476T3 (da) 2009-08-17
CN1930552A (zh) 2007-03-14
EP1704476A2 (fr) 2006-09-27

Similar Documents

Publication Publication Date Title
TW200537379A (en) A system for automatically generating optimized code
Mendis et al. Ithemal: Accurate, portable and fast basic block throughput estimation using deep neural networks
Lopez-Novoa et al. A survey of performance modeling and simulation techniques for accelerator-based computing
Qiu et al. Automated smartnic offloading insights for network functions
Wang et al. A hybrid framework for fast and accurate GPU performance estimation through source-level analysis and trace-based simulation
Jung et al. DeepCuts: a deep learning optimization framework for versatile GPU workloads
Luo et al. Fast: A fast stencil autotuning framework based on an optimal-solution space model
Deniz et al. Minime: Pattern-aware multicore benchmark synthesizer
Hughes et al. Accelerating multi-core processor design space evaluation using automatic multi-threaded workload synthesis
Liu et al. Benchprime: Effective building of a hybrid benchmark suite
Choi et al. Accurate branch prediction for short threads
Singer et al. SYCLops: A SYCL Specific LLVM to MLIR Converter
Sommer et al. Using parallel programming models for automotive workloads on heterogeneous systems-a case study
Stevens et al. A mechanism for balancing accuracy and scope in cross-machine black-box GPU performance modeling
Fang et al. Performance portability across heterogeneous socs using a generalized library-based approach
Deiana Generating Thread-Level Parallelism in Nondeterministic Programs
Marantos et al. Designing Application Analysis Tools for Cross-Device Energy Consumption Estimation
Stevens et al. A unified, hardware-fitted, cross-GPU performance model
Murphy Discovering and exploiting parallelism in DOACROSS loops
Amalou et al. Fast and Accurate Context-Aware Basic Block Timing Prediction using Transformers
Baldini et al. Should I use a GPU? Predicting GPU performance from CPU runs
Zhou Guided automatic binary parallelisation
Welker Determining the Perfect Vectorization Factor
Marantos Design Methodologies and Tools for Energy-aware IoT-based Applications
Bendifallah Generalization of the decremental performance analysis to differential analysis