TW201706833A - 判定用於軟體開發之經推薦之最佳化策略 - Google Patents
判定用於軟體開發之經推薦之最佳化策略 Download PDFInfo
- Publication number
- TW201706833A TW201706833A TW105111264A TW105111264A TW201706833A TW 201706833 A TW201706833 A TW 201706833A TW 105111264 A TW105111264 A TW 105111264A TW 105111264 A TW105111264 A TW 105111264A TW 201706833 A TW201706833 A TW 201706833A
- Authority
- TW
- Taiwan
- Prior art keywords
- optimization
- sparse matrix
- matrix
- program
- programs
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
Abstract
在一個實例中,一種用於推薦用於軟體之一最佳化策略之裝置包括:一記憶體,其儲存用於包括空儲存格及非空儲存格之一稀疏矩陣的資料,其中該稀疏矩陣之非空儲存格表示先前應用於程式之最佳化策略的等級;及一或多個基於硬體之處理器,其經組態以:預測一稀疏矩陣之空儲存格之值,用該等經預測值填充該等空儲存格以產生一完全矩陣,根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略,及提供對該經推薦之最佳化策略之一指示。
Description
本發明係關於軟體最佳化。
使軟體程式最佳化在軟體開發之多個階段發生,且基於大量參數。舉例而言,該等參數可包括執行階段特徵、用以編譯程式之軟體指令的編譯器之編譯設定、在目標計算平台上可用的工具(例如,可用的處理核心、記憶體大小等)、在程式中使用之演算法、在程式中使用之資料結構,或類似者。另外,該等參數可基於程式之目標平台、開發者目標(例如,輸出之品質對執行之速度)及類似者而變化。另外,隨著新平台及執行工具之開發,最佳化策略之選擇正變得愈來愈困難。
一般而言,本發明描述用於在軟體開發期間使軟體最佳化之技術。更特定言之,此等技術包括推薦用於軟體程式之最佳化策略。一般而言,軟體開發者收集表示應用於先前程式之最佳化策略之等級的資料。所收集之資料可形成為稀疏矩陣,該稀疏矩陣對於觀測到的程式與最佳化策略對包括在矩陣內的程式與最佳化策略之相交點處的等級,且對於未觀測到的程式與最佳化策略對包括空儲存格。該等技術接著可包括預測空儲存格之值以形成完全矩陣,且自完全矩陣選擇用
於新程式之最佳化策略。
在一個實例中,一種方法包括:預測一稀疏矩陣之空儲存格之值,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;及提供對該經推薦之最佳化策略之一指示。
在另一實例中,一種用於推薦用於軟體之一最佳化策略之裝置包括:一記憶體,其儲存用於包括空儲存格及非空儲存格之一稀疏矩陣的資料,其中該稀疏矩陣之該等非空儲存格的值表示先前應用於程式之最佳化策略的等級;及一或多個基於硬體之處理器,其經組態以:預測一稀疏矩陣之空儲存格之值,用該等經預測值填充該等空儲存格以產生一完全矩陣,根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略,及提供對該經推薦之最佳化策略之一指示。
在另一實例中,一種用於推薦用於軟體之一最佳化策略之裝置包括:用於預測一稀疏矩陣之空儲存格之值的構件,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用於用該等經預測值填充該等空儲存格以產生一完全矩陣的構件;用於根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略的構件;及用於提供對該經推薦之最佳化策略之一指示的構件。
在另一實例中,一種其上儲存有指令之電腦可讀儲存媒體,該等指令在執行時使得一處理器:預測一稀疏矩陣之空儲存格之值,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該
完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;及提供對該經推薦之最佳化策略之一指示。
在以下隨附圖式及實施方式中闡述一或多個實例之細節。其他特徵、目標及優點將自該描述及圖式以及申請專利範圍顯而易見。
102‧‧‧軟體開發裝置
104‧‧‧軟體最佳化裝置
106‧‧‧最佳化資料庫
110‧‧‧軟體散發者
120‧‧‧顧客裝置
130‧‧‧控制單元
132‧‧‧最佳化推薦單元
134‧‧‧資料庫完成單元
136‧‧‧資料庫管理單元
140A至140C‧‧‧最佳化策略
142A至142E‧‧‧程式
144A至144K‧‧‧值
146A至146L‧‧‧空儲存格
148‧‧‧稀疏矩陣
圖1係說明可執行本發明之技術之實例系統的方塊圖。
圖2係說明可包括於軟體最佳化裝置中之一組實例元件的方塊圖。
圖3係說明以稀疏矩陣之形式包括於最佳化資料庫內之一組實例資料的方塊圖。
圖4A及圖4B係說明由執行本發明之技術產生的試探性測試結果之圖表。
圖5係說明根據本發明之技術之用於使程式最佳化之實例方法的流程圖。
一般而言,本發明係關於用於使對用於程式之最佳化策略之選擇部分地或完全自動化的技術。此等技術包括使用稀疏矩陣,該稀疏矩陣包括針對M個程式及N個最佳化策略的效能資料。矩陣之每一儲存格(其中儲存格係該等程式中之一者與該等最佳化策略中之一者的相交點)中的資料可對應於用於對應程式之最佳化策略的等級,亦即,一對包含一程式及一最佳化策略。
因此,矩陣表示針對使用各種可用的最佳化策略開發之程式所搜集的資料集合。矩陣係稀疏的,此係因為並不是針對每個程式使用每個最佳化策略。因此,在矩陣中將存在不具有對應資料之諸多儲存格(亦即,程式與最佳化策略之相交點)。此等空儲存格中之每一者表
示未使用特定最佳化策略之特定程式。
存在用於填充稀疏矩陣之空儲存格的技術。根據本發明之裝置可使用該等技術,使得在合作篩選技術中使用跨越程式與最佳化策略觀測到的資料之間的類似性以預測未觀測的對之等級。本發明之技術接著包括將每一程式之最佳化策略按最佳效能至最差效能地進行排名。
本發明使用術語「最佳化策略」或「最佳化」來指執行演算法之全系統狀態。最佳化策略可包括大量選項。舉例而言,最佳化策略可包括演算法實施及最佳化,諸如在實施中使用之資料結構之選擇,其中該等資料結構可為(例如)用以表示資料集之清單或樹。最佳化策略亦可包括開發環境最佳化,諸如編譯器之選擇及其編譯最佳化。舉例而言,開發者可在GCC、LLVM及ICC之間以及在編譯最佳化選項-O3與-O2之間選擇。同樣地,開發者可選擇是否使用一或多個特殊化程式碼庫,諸如數學核心庫(Math Kernel Library;MKL)或GNU科學庫(GSL)。此外,執行環境可在最佳化策略中起作用,諸如在執行環境內使用之排程策略、與計算平台相關聯的可用的處理核心之數目及其執行頻率、記憶體大小或類似者。此外,開發者可判定合適執行架構,諸如中央處理單元(CPU)、圖形處理單元(GPU)或數位信號處理器(DSP)。
本發明亦使用術語「等級」描述應用於特定程式之最佳化策略。亦即,術語「等級」係與{程式、最佳化策略}對相關聯之數。等級可說明程式執行之完成時間、輸貫量、電力消耗、程式大小或類似者中之任一者或全部。
為了提供可接受的程式效能,程式開發者自多種最佳化策略當中選擇。一般而言,最佳化可在程式開發之各個層級發生。儘管最佳化策略係孤立的,但在程式開發之各個層級之最佳化策略之間的互動
沒有良好的檔案記載。此部分地因為軟體、開發、執行環境及硬體正變得愈來愈複雜。儘管如此,藉由改良特定程式(或演算法)之最佳化策略,仍可達成彼程式之甚至更好的效能。更好的效能可意指(例如)更快完成、更低的電力消耗、更低的記憶體消耗或類似者、及/或該等因素之任何組合。
本發明之技術包括將對程式之最佳化策略的選擇性預測模型化為「巨量資料」問題。亦即,此等技術包括將合作篩選技術應用於原始效能評定(benchmarking)對。此包括在給定所觀測到的對之稀疏等級集合的情況下,披露{程式、最佳化策略}對之間的關係。依據跨越程式與最佳化策略所觀測到的資料之間的類似性,使用合作篩選技術預測未觀測到的對之等級以及對於每個程式自最佳效能至最差效能地對最佳化進行排名。如下文更詳細地論述的,此等技術可導致為一特定程式預測將得到彼程式之最佳效能結果之最佳化策略。
圖1係說明可執行本發明之技術之實例系統100的方塊圖。特定而言,系統100包括軟體開發裝置102、軟體最佳化裝置104、最佳化資料庫106、軟體散發者110及顧客裝置120。軟體開發裝置102包括軟體開發終端機、測試裝置、效能評定裝置及類似者。
一般而言,軟體開發實體以顧客裝置120中之一或多者為目標,為其開發特定程式。顧客裝置120可包括(例如)桌上型電腦、膝上型電腦、行動裝置(諸如平板電腦、智慧型電話、個人數位助理(PDA)),或任何其他此類計算裝置。
軟體開發實體選擇顧客裝置120中之一或多者,以為其開發一件軟體(亦即,程式)。該選擇可針對一特定裝置或一類裝置,例如實施及執行特定作業系統之裝置。
軟體開發實體亦可建構最佳化資料庫106。一般而言,如上文所論述,最佳化資料庫106包括儲存{程式、最佳化策略}對之等級的
項。舉例而言,最佳化資料庫106可實現為矩陣,在該矩陣中,程式列出於一個維度、最佳化策略列出於另一維度,且儲存格(亦即,此等維度之相交點)儲存表示當將特定最佳化策略用於特定程式時的等級之值。最佳化資料庫106之矩陣可為稀疏的,此係因為並非每個程式皆會使用每個最佳化策略進行最佳化,且同樣地,並非每個最佳化策略將用以使每個程式最佳化。
在新程式之開發期間,軟體開發實體可使用軟體最佳化裝置104以判定用於該新程式之經推薦之最佳化策略。一般而言,為了判定經推薦之最佳化策略,軟體最佳化裝置104預測最佳化資料庫106之空儲存格的值,藉此形成完全矩陣。為了填充稀疏矩陣之空儲存格,軟體最佳化裝置104可執行降維演算法,諸如低秩矩陣因子分解。
舉例而言,用R MxN 表示M個程式及N個最佳化策略之等級的稀疏集合(亦即,使得R MxN 近似為最佳化資料庫106之稀疏矩陣)。低秩矩陣因子分解係近似於下式之降維策略:
其中K<MIN{M,N}係近似矩陣之秩。在式(1)中,R係原始第一矩陣(例如,來自最佳化資料庫106)之近似矩陣,K係矩陣R之秩,且U及V係人工矩陣。未觀測到的對之等級被模型化為交叉乘積。
低秩矩陣因子分解之目標係最小化關於所觀測到的資料之以下函數:
在式(2)中,O表示來自最佳化資料庫106之{程式、最佳化策略}對之所觀測到的等級的集合。以隨機梯度下降法執行高效最佳化。亦即,使用以下更新函數:
在式(3)及式(4)中,α表示收斂速率。諸如軟體開發者之使用者可將多個維度及α之值提供至軟體最佳化裝置104以用於執行此等式。使用此等值,軟體最佳化裝置104執行式(3)及(4)以產生表示最佳化資料庫106之稀疏矩陣的完全矩陣,使得完全矩陣之每一儲存格經填充。
在產生完全矩陣之後,軟體最佳化裝置104判定程式之特性及程式之目標裝置,以產生用於使程式最佳化之經推薦的最佳化策略。舉例而言,藉由將新程式(亦即,當前處於開發中之程式)連同程式之特性(例如,用於執行之目標平台及所關注的其他參數,亦即,適用於該程式之彼等元素)應用於完全矩陣,軟體最佳化裝置104判定用於新程式之經推薦之最佳化策略。特定而言,經推薦之最佳化策略可包括用於開發之每一層級的最佳化推薦。舉例而言,經推薦之最佳化策略可包括:設計層級推薦,諸如用於表示各種類型之資料的資料結構之類型;編譯器層級推薦,諸如選擇哪個編譯器及在編譯期間使用哪些編譯最佳化設定;或類似者。
軟體最佳化裝置104可將經推薦之最佳化策略提供至軟體開發裝置102。或者,在一些實例中,軟體最佳化裝置104包括於軟體開發裝置102之集合中。在任何情形下,軟體開發實體可使用經推薦之最佳化策略使新程式最佳化。軟體開發實體可因此繼續開發程式及使程式最佳化。此外,在開發程式及使程式最佳化之後,軟體開發實體可更新最佳化資料庫106以描述由新程式之開發及最佳化產生的針對該{程式、最佳化策略}對之等級。
在程式之開發及最佳化之後,(例如)使用軟體開發裝置102中之一者的軟體開發實體將經開發程式提供至軟體散發者110。此提供可經由固定電腦可讀儲存媒體,諸如硬碟、CD-ROM、隨身碟或類似
者,或經由傳輸,例如經由區域網路、廣域網路或網際網路。軟體散發者110將程式提供至顧客裝置120,該提供同樣可經由固定電腦可讀儲存器媒體之散發及/或經由傳輸。舉例而言,軟體散發者110可代表行動裝置之應用程式(「app」)商店。
最後,顧客裝置120之使用者可自軟體散發者110擷取程式。使用者可在各別顧客裝置120上安裝及/或執行程式。
圖2係說明可包括於軟體最佳化裝置104中之一組實例元件的方塊圖。在此實例中,軟體最佳化裝置104包括控制單元130。控制單元130可對應於(例如)經組態以執行歸因於軟體最佳化裝置104之功能性的一或多個處理單元。舉例而言,控制單元130可對應於一或多個基於硬體之處理單元,諸如一或多個微處理器、中央處理單元(CPU)、數位信號處理器(DSP)、場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、或其任何組合或類似處理電路。同樣地,控制單元130亦可包括用於儲存可由一或多個處理單元執行之指令的電腦可讀媒體,諸如資料儲存媒體及/或記憶體。
在此實例中,控制單元130實施最佳化推薦單元132、資料庫完成單元134及資料庫管理單元136。資料庫管理單元136一般而言與最佳化資料庫106互動,(例如)將資料儲存至最佳化資料庫106及自最佳化資料庫106擷取資料。儘管最佳化資料庫106被展示為與軟體最佳化裝置104分離,但應理解在一些實例中,最佳化資料庫106可儲存於軟體最佳化裝置104之記憶體內。或者,軟體最佳化裝置104可包括至單獨地儲存之最佳化資料庫106的基於硬體之介面。
起初,軟體最佳化裝置104可接收{程式、最佳化策略}對之等級值,且資料庫管理單元136將此等值以及對程式及最佳化策略之指示儲存至最佳化資料庫106。如上文所論述,資料庫管理單元136可將最佳化資料庫106內之資料配置為一矩陣。回應於軟體最佳化裝置104接
收到欲為其提供經推薦之最佳化策略的新(亦即,當前)程式,資料庫管理單元136自最佳化資料庫106擷取資料以用於完全矩陣之建構。
資料庫完成單元134表示負責自最佳化資料庫106之矩陣中之稀疏項產生完全矩陣的單元。亦即,資料庫完成單元134可在產生完全矩陣時執行(例如)上文所論述之式(3)及式(4)。資料庫完成單元134可進一步接收指示維度數目及收斂速率的資料以在建構完全矩陣時使用。
在資料庫完成單元134填充最佳化資料庫106之稀疏矩陣的空儲存格以形成完全矩陣之後,最佳化推薦單元132將當前程式應用於完全矩陣以判定用於當前程式之經推薦之最佳化策略。特定而言,最佳化推薦單元132判定正為之開發當前程式之裝置(或平台)、彼裝置之特徵(例如可用的記憶體大小、可用的處理核心及類似者)以及當前程式之所關注的參數,且接著判定包括用於程式開發之各個層級之最佳化的組合的最佳化策略,使得該組合得到最佳化的組合之等級的其他彙總值當中的最高(亦即,總體最高等級)彙總值。
更特定言之,在一些實例中,資料庫完成單元134將新程式之項添加至完全矩陣中。此項包括新程式之針對各個最佳化策略中之每一者的經預測分數(score)。最佳化推薦單元132接著可將用於新程式之最佳化策略按分數次序(例如最高分數至最低分數)排序。較高等級可大體對應於被預測提供更佳效能之最佳化策略。
在判定得到最佳化的等級之最高彙總值的最佳化策略之後,最佳化推薦單元132輸出對用於當前程式之經推薦之最佳化策略的指示。舉例而言,該指示可包含最佳化策略之文字及/或圖形表示,其由軟體最佳化裝置104經由顯示器(未展示)顯示或由軟體開發裝置102中之一者(圖1)顯示。
此外,在當前程式已被開發且根據最佳化策略進行最佳化之
後,軟體最佳化裝置104可接收包括於最佳化策略中之最佳化的等級的值。資料庫管理單元136接著可用當前程式之{程式、最佳化策略}對之等級的值更新最佳化資料庫106。在一些實例中,除經推薦之最佳化策略以外或作為經推薦之最佳化策略的替代方案,亦可嘗試其他最佳化策略。在此等實例中,軟體最佳化裝置104亦可接收此等其他{程式、最佳化策略}對之等級值,且用各個對之等級中之每一者更新最佳化資料庫106。
以此方式,軟體最佳化裝置104表示一裝置之實例,該裝置包括:一記憶體,其儲存用於包括空儲存格及非空儲存格之一稀疏矩陣的資料,其中該稀疏矩陣之該等非空儲存格的值表示先前應用於程式之最佳化策略的等級;及一或多個基於硬體之處理器,其經組態以:預測一稀疏矩陣之空儲存格之值;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;及提供對該經推薦之最佳化策略之一指示。
圖3係說明以稀疏矩陣148之形式包括於最佳化資料庫106內之一組實例資料的方塊圖。特定而言,稀疏矩陣148之列表示各個程式142A至142E(程式142),而稀疏矩陣148之行表示可應用於該等程式之最佳化策略140A至140C(最佳化策略140)。
儲存格存在於每一列與行之相交點處,其中儲存格可具有值144A至144K(值144)中之一者或為空儲存格146A至146L(空儲存格146)中之一者。值144表示由將最佳化策略140中之對應者應用於程式142中之一對應者而產生之等級的數值。舉例而言,值144A包括由將最佳化策略140A應用於程式142A而產生之等級的值。因此,包括值144中之一者的儲存格表示{程式、最佳化策略}對之所觀測到的等級,其中該程式對應於程式142中之一者且該最佳化策略對應於最佳
化策略140中之應用於該程式者。
另一方面,空儲存格146表示未觀測到的{程式、最佳化策略}對。舉例而言,空儲存格146A指示未觀測到應用於程式142B之最佳化策略140A的等級。
根據本發明之技術,可填充空儲存格146以自稀疏矩陣148形成完全矩陣。如上文所論述,軟體最佳化裝置104通常經組態以預測空儲存格146中之每一者的值。特定而言,軟體最佳化裝置104可將空儲存格146之值模型化為(例如)根據如上文所論述的式(3)及式(4)自稀疏矩陣148形成之矩陣的交叉乘積。
圖4A及圖4B係說明由執行本發明之技術產生的試探性測試結果之圖表。特定而言,圖4A係說明由包括{程式、最佳化策略}對之等級之矩陣的稀疏性產生之誤差結果比較誤差(error results comparative errors)的圖表。亦即,誤差結果通常表示用於程式之經預測最佳化策略與用於彼等程式之理想最佳化策略之間的差異之量測值。此等量測值包括平均誤差、平均誤差加兩倍標準差,以及平均誤差減兩倍標準差。
如在圖4A中所示,即使當稀疏矩陣僅係25%完整時,誤差量測值僅係大約0.25。當稀疏矩陣係50%完整時,誤差率係大約0.13。在75%完整時,誤差率係大約0.06。在90%完整時,誤差率係大約0.025。因此,可見本發明之技術可得到具有低誤差率之預測,甚至對於表示{程式、最佳化策略}對之等級的極稀疏(例如,25%完整)矩陣亦如此。
圖4B係說明根據本發明之技術使用各個經推薦之最佳化策略最佳化之程式的實例效能量度的條形圖。特定而言,在此實例中用於測試之程式係天氣研究預報(WRF)程式(具體而言,「471.WRF」程式),其係軟體最佳化測試之常用效能評定程式。在此測試中,使用SPEC
CPU2006基準,且編譯器試探法包括迴圈最佳化,諸如展開、融合及平鋪加自動並行化,以及自動向量化。在無最佳化之情況下建立此程式之基線,得到分數1。此外,最佳的最佳化得到分數3.68。分數反映程式速度,亦即,WRF程式之執行速度。
使用本發明之技術執行各個測試。在一測試中,稀疏矩陣係50%完整。在此測試情形下,所得之分數係3.23。換言之,在使用50%完整之稀疏矩陣時,程式速度為基線的3.23倍。在另一測試中,稀疏矩陣係75%完整。在此測試情形下,所得之分數係3.51。亦即,在使用75%完整之稀疏矩陣時,程式速度為基線的3.51倍。因此,如自此等測試結果可見,即使在包括{程式、最佳化策略}對之等級值之稀疏矩陣的情況下,本發明之技術亦可得到對最佳化策略之有力推薦。
圖5係說明根據本發明之技術之用於使程式最佳化之實例方法的流程圖。圖5之方法被解釋為由軟體最佳化裝置104(圖1及圖2)執行。然而,應理解,圖1之其他裝置(例如軟體開發裝置102)可單獨地或與其他裝置組合地執行此方法之部分或全部。
起初,軟體最佳化裝置104形成包括{程式、最佳化策略}對之等級的稀疏矩陣(150)。舉例而言,資料庫管理單元136(圖2)可接收表示各個觀測到的{程式、最佳化策略}對之等級的值且將此資料儲存於最佳化資料庫106中。資料庫管理單元136可藉此形成稀疏矩陣,諸如稀疏矩陣148(圖3)。此外,該稀疏矩陣可被認為係「稀疏的」,此係因為該矩陣無需包括每一可能{程式、最佳化策略}對之值。實際上,該矩陣可包括相對較少項(例如25%填充,如在圖4A中所示),且仍使用本發明之技術得到可接受結果。
軟體最佳化裝置104接著獲得用於新程式之資料(152)。舉例而言,軟體最佳化裝置104可接收指示以下各項之資料:新程式之匹配先前所分析程式之參數的所關注參數,以及定義收斂速率之值。使用
此資料,軟體最佳化裝置104可判定稀疏矩陣之空儲存格之值(154)。舉例而言,資料庫完成單元134可(例如)藉由使用在步驟(152)處接收之收斂速率執行上文之式(3)及式(4)來計算稀疏矩陣之空儲存格之值。資料庫完成單元134可使用空儲存格之經判定值(156)以及稀疏矩陣之現有資料形成完全矩陣。
使用所關注的參數以及完全矩陣,軟體最佳化裝置104可判定用於新程式之經推薦之最佳化策略(158)。亦即,軟體最佳化裝置104之最佳化推薦單元132可將新程式以及新程式之所關注的參數應用於完全矩陣,以判定針對新程式之各個所關注參數的最佳化策略之哪個組合得到最高彙總等級。軟體最佳化裝置104接著可將對經推薦之最佳化策略之指示提供(160)(例如)至另一裝置或經由輸出提供至使用者。
此外,軟體開發者可使用經推薦之最佳化策略使新程式最佳化(162)。接著,軟體開發者可判定應用於新程式之經推薦之最佳化策略的等級(164)。軟體最佳化裝置104接著可用{新程式、經推薦之最佳化策略}對之經判定等級更新稀疏矩陣(166)。
在一些實例中,該方法可包括提供對用於新程式之複數個高排名(以及可能地低排名)最佳化策略的指示。在此等實例中,軟體開發者可測試用各個高排名(及在一些實例中,低排名)最佳化策略使新程式最佳化,且選取得到最佳等級之最佳化策略。此外,軟體最佳化裝置104可用新程式之經測試最佳化策略中之每一者更新稀疏矩陣,亦即,將等級資訊添加至矩陣中之空儲存格。
以此方式,圖5之方法表示一方法之實例,該方法包括:預測一稀疏矩陣之空儲存格之值,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;
及提供對該經推薦之最佳化策略之一指示。
將認識到,取決於實例,本文中所描述之技術中之任一者的某些動作或事件可以一不同序列執行,可添加、合併或完全省略該等動作或事件(例如,並非所有所描述動作或事件對於該等技術之實踐皆係必要的)。此外,在某些實例中,動作或事件可同時執行(例如,經由多執行緒處理、中斷處理或多個處理器)而非依序執行。
在一或多個實例中,所描述之功能可以硬體、軟體、韌體或其任何組合來實施。若以軟體實施,則該等功能可作為一或多個指令或程式碼而儲存於電腦可讀媒體上或經由電腦可讀媒體進行傳輸,且由基於硬體之處理單元執行。電腦可讀媒體可包括電腦可讀儲存媒體,其對應於諸如資料儲存媒體之有形媒體,或通信媒體,其包括促進(例如)根據通信協定將電腦程式自一位置傳送至另一位置之任何媒體。以此方式,電腦可讀媒體通常可對應於(1)非暫時性的有形電腦可讀儲存媒體,或(2)諸如信號或載波之通信媒體。資料儲存媒體可為可由一或多個電腦或一或多個處理器存取以擷取指令、程式碼及/或資料結構以用於實施本發明中所描述之技術的任何可用媒體。電腦程式產品可包括電腦可讀媒體。
藉由實例方式(而非限制),此等電腦可讀儲存媒體可包含RAM、ROM、EEPROM、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存裝置、快閃記憶體或可用於儲存呈指令或資料結構形式之所要程式碼且可由電腦存取的任何其他媒體。另外,任何連接被恰當地稱為電腦可讀媒體。舉例而言,若使用同軸電纜、光纜、雙絞線、數位用戶線(DSL)或無線技術(諸如紅外線、無線電及微波)自網站、伺服器或其他遠端源傳輸指令,則同軸電纜、光纜、雙絞線、DSL或無線技術(諸如紅外線、無線電及微波)包括於媒體之定義中。然而,應理解,電腦可讀儲存媒體及資料儲存媒體不包括連接、載波、信號或其
他暫時性媒體,而是針對非暫時性有形儲存媒體。如本文中所使用,磁碟及光碟包括緊密光碟(CD)、雷射光碟、光學光碟、數位影音光碟(DVD)、軟碟和藍光光碟,其中磁碟通常以磁性方式再生資料,而光碟使用雷射以光學方式再生資料。以上之組合亦應包括於電腦可讀媒體之範疇內。
指令可由一或多個處理器執行,該一或多個處理器諸如一或多個數位信號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他等效的整合或離散邏輯電路。因此,如本文中所使用之術語「處理器」可指上述結構或適合於實施本文中所描述之技術的任何其他結構中之任一者。另外,在一些態樣中,本文中所描述之功能性可提供於經組態用於編碼及解碼之專用硬體及/或軟體模組內,或併入組合式編碼解碼器中。此外,該等技術可完全實施於一或多個電路或邏輯元件中。
本發明之技術可在包括無線手機、積體電路(IC)或一組IC(例如晶片組)之多種裝置或設備中實施。本發明中描述各種組件、模組或單元以強調經組態以執行所揭示技術之裝置的功能態樣,但未必要求由不同硬體單元來實現。確切而言,如上文所描述,可將各個單元組合於編碼解碼器硬體單元中,或藉由互操作性硬體單元(包括如上文所描述之一或多個處理器)之集合結合合適之軟體及/或韌體來提供該等單元。
已描述各種實例。此等及其他實例係在以下申請專利範圍之範疇內。
Claims (30)
- 一種推薦用於軟體之一最佳化策略之方法,該方法包含:預測一稀疏矩陣之空儲存格之值,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;及提供對該經推薦之最佳化策略之一指示。
- 如請求項1之方法,其進一步包含使用該經推薦之最佳化策略使該當前程式最佳化。
- 如請求項1之方法,其中判定該經推薦之最佳化策略包含判定用於該當前程式之該等最佳化策略中之得到一最高等級的最佳化策略。
- 如請求項1之方法,其中該稀疏矩陣之該等程式各自包括包含以下各項中之一或多者的複數個參數:用於對應程式之執行階段特徵、用以編譯該對應程式之指令之一編譯器的編譯設定、用於執行該對應程式之一目標平台、可用於該目標平台之處理核心之一數目、或該目標平台之一記憶體大小,且其中判定該經推薦之最佳化策略包含判定該複數個參數中之適用於該當前程式之一或多個參數的等級。
- 如請求項1之方法,其進一步包含建構該稀疏矩陣,其中建構該稀疏矩陣包含:接收對包括於該稀疏矩陣中之該等程式之指示;接收對應用於包括於該稀疏矩陣中之該等程式之該等最佳化 策略的指示;接收應用於該等程式之該等最佳化策略的該等等級;及建構該稀疏矩陣,使得該稀疏矩陣之儲存格對應於該等程式與該等最佳化策略之相交點,且使得該等非空儲存格包括該等等級中之用於該等最佳化策略中之應用於該等程式中之該對應程式的對應最佳化策略的等級。
- 如請求項1之方法,其中填充該等空儲存格包含對該稀疏矩陣執行一降維演算法以產生該完全矩陣。
- 如請求項6之方法,其中執行該降維演算法包含對該稀疏矩陣執行低秩矩陣因子分解以產生該完全矩陣。
- 如請求項1之方法,其中判定該經推薦之最佳化策略包含判定複數個經推薦最佳化策略,且其中提供對該經推薦之最佳化策略之該指示包含提供對該複數個經推薦最佳化策略之指示。
- 如請求項1之方法,其進一步包含在使用該經推薦之最佳化策略使該當前程式最佳化之後,更新該稀疏矩陣以包括針對該當前程式及該經推薦之最佳化策略之一或多個項。
- 一種用於推薦用於軟體之一最佳化策略之裝置,該裝置包含:一記憶體,其儲存用於包括空儲存格及非空儲存格之一稀疏矩陣的資料,其中該稀疏矩陣之該等非空儲存格的值表示先前應用於程式之最佳化策略的等級;及一或多個基於硬體之處理器,其經組態以:預測一稀疏矩陣之空儲存格之值,用該等經預測值填充該等空儲存格以產生一完全矩陣,根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略,及提供對該經推薦之最佳化策略之一指示。
- 如請求項10之裝置,其中該一或多個基於硬體之處理器進一步經組態以使用該經推薦之最佳化策略使該當前程式最佳化。
- 如請求項10之裝置,其中為了判定該經推薦之最佳化策略,該一或多個基於硬體之處理器經組態以判定用於該當前程式之該等最佳化策略中之得到一最高等級的最佳化策略。
- 如請求項10之裝置,其中該稀疏矩陣之該等程式各自包括包含以下各項中之一或多者的複數個參數:用於對應程式之執行階段特徵、用以編譯該對應程式之指令之一編譯器的編譯設定、用於執行該對應程式之一目標平台、可用於該目標平台之處理核心之一數目、或該目標平台之一記憶體大小,且其中為了判定該經推薦之最佳化策略,該一或多個基於硬體之處理器經組態以判定該複數個參數中之適用於該當前程式之一或多個參數的等級。
- 如請求項10之裝置,其中該一或多個基於硬體之處理器進一步經組態以:接收對包括於該稀疏矩陣中之該等程式之指示;接收對應用於包括於該稀疏矩陣中之該等程式之該等最佳化策略的指示;接收應用於該等程式之該等最佳化策略的該等等級;及建構該稀疏矩陣,使得該稀疏矩陣之儲存格對應於該等程式與該等最佳化策略之相交點,且使得該等非空儲存格包括該等等級中之用於該等最佳化策略中之應用於該等程式中之該對應程式的對應最佳化策略的等級。
- 如請求項10之裝置,其中為了填充該等空儲存格,該一或多個基於硬體之處理器經組態以對該稀疏矩陣執行一降維演算法以 產生該完全矩陣。
- 如請求項15之裝置,其中為了執行該降維演算法,該一或多個基於硬體之處理器經組態以對該稀疏矩陣執行低秩矩陣因子分解以產生該完全矩陣。
- 如請求項10之裝置,其中該一或多個基於硬體之處理器進一步經組態以判定複數個經推薦最佳化策略,且提供對該複數個經推薦最佳化策略之指示。
- 如請求項10之裝置,該一或多個基於硬體之處理器進一步經組態以在使用該經推薦之最佳化策略使該當前程式最佳化之後,更新該稀疏矩陣以包括針對該當前程式及該經推薦之最佳化策略之一或多個項。
- 一種用於推薦用於軟體之一最佳化策略之裝置,該裝置包含:用於預測一稀疏矩陣之空儲存格之值的構件,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用於用該等經預測值填充該等空儲存格以產生一完全矩陣的構件;用於根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略的構件;及用於提供對該經推薦之最佳化策略之一指示的構件。
- 如請求項19之裝置,其中用於判定該經推薦之最佳化策略的該構件包含用於判定用於該當前程式之該等最佳化策略中之得到一最高等級之最佳化策略的構件。
- 如請求項19之裝置,其中該稀疏矩陣之該等程式各自包括包含以下各項中之一或 多者的複數個參數:用於對應程式之執行階段特徵、用以編譯該對應程式之指令之一編譯器的編譯設定、用於執行該對應程式之一目標平台、可用於該目標平台之處理核心之一數目、或該目標平台之一記憶體大小,且其中用於判定該經推薦之最佳化策略的該構件包含用於判定該複數個參數中之適用於該當前程式之一或多個參數之等級的構件。
- 如請求項19之裝置,其進一步包含用於建構該稀疏矩陣的構件,該構件包含:用於接收對包括於該稀疏矩陣中之該等程式之指示的構件;用於接收對應用於包括於該稀疏矩陣中之該等程式之該等最佳化策略之指示的構件;用於接收應用於該等程式之該等最佳化策略之該等等級的構件;及用於建構該稀疏矩陣的構件,使得該稀疏矩陣之儲存格對應於該等程式與該等最佳化策略之相交點,且使得該等非空儲存格包括該等等級中之用於該等最佳化策略中之應用於該等程式中之該對應程式的對應最佳化策略的等級。
- 如請求項19之裝置,其中用於填充該等空儲存格的該構件包含用於對該稀疏矩陣執行低秩矩陣因子分解以產生該完全矩陣的構件。
- 如請求項19之裝置,其進一步包含用於在使用該經推薦之最佳化策略使該當前程式最佳化之後更新該稀疏矩陣以包括針對該當前程式及該經推薦之最佳化策略之一或多個項的構件。
- 一種其上儲存有指令之電腦可讀儲存媒體,該等指令在執行時使得一處理器: 預測一稀疏矩陣之空儲存格之值,其中該稀疏矩陣之非空儲存格的值表示先前應用於程式之最佳化策略的等級;用該等經預測值填充該等空儲存格以產生一完全矩陣;根據該完全矩陣為不包括於該稀疏矩陣之該等程式中之一當前程式判定得到一最高等級之一經推薦之最佳化策略;及提供對該經推薦之最佳化策略之一指示。
- 如請求項25之電腦可讀儲存媒體,其中使得該處理器判定該經推薦之最佳化策略的該等指令包含使得該處理器判定用於該當前程式之該等最佳化策略中之得到一最高等級之最佳化策略的指令。
- 如請求項25之電腦可讀儲存媒體,其中該稀疏矩陣之該等程式各自包括包含以下各項中之一或多者的複數個參數:用於對應程式之執行階段特徵、用以編譯該對應程式之指令之一編譯器的編譯設定、用於執行該對應程式之一目標平台、可用於該目標平台之處理核心之一數目、或該目標平台之一記憶體大小,且其中使得該處理器判定該經推薦之最佳化策略的該等指令包含使得該處理器判定該複數個參數中之適用於該當前程式之一或多個參數之等級的指令。
- 如請求項25之電腦可讀儲存媒體,其進一步包含使得該處理器建構該稀疏矩陣的指令,該等指令包含使得該處理器執行以下步驟的指令:接收對包括於該稀疏矩陣中之該等程式之指示;接收對應用於包括於該稀疏矩陣中之該等程式之該等最佳化策略的指示;接收應用於該等程式之該等最佳化策略的該等等級;及 建構該稀疏矩陣,使得該稀疏矩陣之儲存格對應於該等程式與該等最佳化策略之相交點,且使得該等非空儲存格包括該等等級中之用於該等最佳化策略中之應用於該等程式中之該對應程式的對應最佳化策略的等級。
- 如請求項25之電腦可讀儲存媒體,其中使得該處理器填充該等空儲存格的該等指令包含使得該處理器對該稀疏矩陣執行低秩矩陣因子分解以產生該完全矩陣的指令。
- 如請求項25之電腦可讀儲存媒體,其進一步包含使得該處理器在使用該經推薦之最佳化策略使該當前程式最佳化之後更新該稀疏矩陣以包括針對該當前程式及該經推薦之最佳化策略之一或多個項的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/698,454 US9626155B2 (en) | 2015-04-28 | 2015-04-28 | Determining recommended optimization strategies for software development |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201706833A true TW201706833A (zh) | 2017-02-16 |
TWI598812B TWI598812B (zh) | 2017-09-11 |
Family
ID=55661626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105111264A TWI598812B (zh) | 2015-04-28 | 2016-04-11 | 判定用於軟體開發之經推薦之最佳化策略 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9626155B2 (zh) |
TW (1) | TWI598812B (zh) |
WO (1) | WO2016175945A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102063966B1 (ko) * | 2015-10-21 | 2020-01-09 | 엘에스산전 주식회사 | Plc 명령어 컴파일 최적화 방법 |
US9977663B2 (en) * | 2016-07-01 | 2018-05-22 | Intel Corporation | Technologies for optimizing sparse matrix code with field-programmable gate arrays |
AU2016228166A1 (en) * | 2016-09-13 | 2018-03-29 | Canon Kabushiki Kaisha | Visualisation for guided algorithm design to create hardware friendly algorithms |
US11843656B2 (en) * | 2017-09-27 | 2023-12-12 | Iguazio Systems Ltd. | Dynamic application mobilization |
US10409569B1 (en) * | 2017-10-31 | 2019-09-10 | Snap Inc. | Automatic software performance optimization |
US10956137B2 (en) * | 2019-06-10 | 2021-03-23 | International Business Machines Corporation | Compiling source code using source code transformations selected using benchmark data |
CN116595543A (zh) * | 2023-07-17 | 2023-08-15 | 腾源大数据信息技术(江苏)有限公司 | 一种基于互联网平台用软件开发应用数据的处理系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6059842A (en) * | 1998-04-14 | 2000-05-09 | International Business Machines Corp. | System and method for optimizing computer software and hardware |
US7263692B2 (en) * | 2003-06-30 | 2007-08-28 | Intel Corporation | System and method for software-pipelining of loops with sparse matrix routines |
US7966331B2 (en) * | 2003-08-18 | 2011-06-21 | General Electric Company | Method and system for assessing and optimizing crude selection |
US20060236310A1 (en) * | 2005-04-19 | 2006-10-19 | Domeika Max J | Methods and apparatus to iteratively compile software to meet user-defined criteria |
US7640224B2 (en) * | 2007-03-26 | 2009-12-29 | International Business Machines Corporation | Active sampling collaborative prediction method for end-to-end performance prediction |
US9727532B2 (en) * | 2008-04-25 | 2017-08-08 | Xerox Corporation | Clustering using non-negative matrix factorization on sparse graphs |
WO2011047918A1 (en) * | 2009-10-21 | 2011-04-28 | International Business Machines Corporation | Method and system for improving software execution time by optimizing a performance model |
US9792432B2 (en) * | 2012-11-09 | 2017-10-17 | Nokia Technologies Oy | Method and apparatus for privacy-oriented code optimization |
US20140278721A1 (en) * | 2013-03-15 | 2014-09-18 | Lisa M. Giles | Global optimization strategy system and method of use |
-
2015
- 2015-04-28 US US14/698,454 patent/US9626155B2/en not_active Expired - Fee Related
-
2016
- 2016-03-23 WO PCT/US2016/023725 patent/WO2016175945A1/en active Application Filing
- 2016-04-11 TW TW105111264A patent/TWI598812B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20160321032A1 (en) | 2016-11-03 |
TWI598812B (zh) | 2017-09-11 |
WO2016175945A1 (en) | 2016-11-03 |
US9626155B2 (en) | 2017-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI598812B (zh) | 判定用於軟體開發之經推薦之最佳化策略 | |
US10032114B2 (en) | Predicting application performance on hardware accelerators | |
US9569179B1 (en) | Modifying models based on profiling information | |
Snijders et al. | Manual for SIENA version 3.1 | |
US20230035451A1 (en) | Resource usage prediction for deep learning model | |
JP7040319B2 (ja) | 運用管理装置、移動先推奨方法及び移動先推奨プログラム | |
CN102096632A (zh) | 代码变化与测试之间的桥接 | |
US9436725B1 (en) | Live data center test framework | |
US20240020543A1 (en) | Glp-1/gip dual agonists | |
CN111406264A (zh) | 神经架构搜索 | |
NL2030226A (en) | Methods, systems, articles of manufacture and apparatus to optimize resources in edge networks | |
US20230259385A1 (en) | Methods and systems for hyperparameter tuning and benchmarking | |
JP2020149693A (ja) | 生成装置、生成方法および生成プログラム | |
CN109828750B (zh) | 自动配置数据埋点的方法、装置、电子设备及存储介质 | |
US9170909B2 (en) | Automatic parallel performance profiling systems and methods | |
JP5803469B2 (ja) | 予測方法及び予測プログラム | |
CN113554178A (zh) | 优化梯度提升特征选择 | |
US11410073B1 (en) | Systems and methods for robust feature selection | |
KR101886317B1 (ko) | 가상 머신 배치 선택 장치 및 방법 | |
Li et al. | Accurate and efficient processor performance prediction via regression tree based modeling | |
JP2021064049A (ja) | 計算機システム及び数理モデルの生成支援方法 | |
CN112243509A (zh) | 从异构源生成数据集用于机器学习的系统和方法 | |
US20220027739A1 (en) | Search space exploration for deep learning | |
JP7219402B2 (ja) | 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム | |
US20150134443A1 (en) | Testing a marketing strategy offline using an approximate simulator |