• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      超強通用編譯器優(yōu)化工具準確率是傳統(tǒng)方法的5倍

      2020-04-20 06:24朱建
      計算機與網(wǎng)絡(luò) 2020年2期
      關(guān)鍵詞:代碼英特爾架構(gòu)

      朱建

      新代碼在自家芯片上運行狀況如何?英特爾自己都沒有別人家的新工具清楚。這就是MIT耗時一年提出的研究成果,名為Ithemal,核心功能也非常簡單:能夠分析數(shù)以百萬計自動描述的基本塊(計算指令的基本片段),來確切了解不同的芯片機構(gòu)如何執(zhí)行計算,效果也非常驚艷。

      MIT News透露,傳統(tǒng)基于人工設(shè)計的模型,預測代碼在芯片上的運行速度,與實際運行速度之間的錯誤率高達50 %。就算是芯片供應商,比如英特爾預測代碼在自己芯片上的運行速度,錯誤率也達到20 %。而Ithemal,錯誤率僅為10 %,性能是傳統(tǒng)方法的5倍,英特爾的2倍。

      整個過程都是自動化的,不需要人為干預,就能夠快速分析數(shù)十萬或數(shù)百萬個基本塊,并且通用它可以快速學習代碼在任何新的芯片架構(gòu)的性能速度,無論是機器學習,還是加密技術(shù)上鏈或者編譯器優(yōu)化等,都能分析。

      研究人員分享了這樣的一個使用場景:

      如果想在一個新的芯片架構(gòu)上訓練一個模型,比如谷歌的TPU,只需要從這個架構(gòu)中收集數(shù)據(jù),經(jīng)過分析器運行后,去訓練Ithemal,可得到一個可以預測其性能的模型?!睂τ诔浞职l(fā)揮芯片性能,讓代碼運行更有效率,這是具有突破性意義的一項進展。

      基于神經(jīng)網(wǎng)絡(luò),避開“盲人摸象”

      通常情況下,為了讓代碼能夠在芯片上高效運行,開發(fā)者會結(jié)合編譯器設(shè)計一個性能模型,模擬代碼在芯片架構(gòu)上的運行情況。開發(fā)者會根據(jù)這些信息進一步優(yōu)化代碼,進一步提高代碼運行效率,突破芯片的性能瓶頸。這種思路雖然沒什么問題,麻煩出在如何設(shè)計性能模型上,傳統(tǒng)的方法是一小部分專家來人工設(shè)計。

      面對錯綜復雜的芯片架構(gòu),這多少有些“盲人摸象”的感覺,就英特爾一家,描述芯片架構(gòu)的文檔,多達3 000頁。而且這些內(nèi)容也不一定完整,基于商業(yè)競爭以及技術(shù)保密上的考慮,英特爾也會去刻意忽略一些內(nèi)容,這無疑又加大了困難———盲人摸到的象,但可能缺胳膊少腿。更別提現(xiàn)代芯片架構(gòu)設(shè)計了,不僅不透明,而且及其復雜,難以理解。想要得到一個性能模型,很難;想要得到一個更精確的性能模型,更難。

      MIT的方法中,一開始就繞開了“盲人摸象”的困境,而是建立神經(jīng)網(wǎng)路,從“數(shù)據(jù)”中學習。

      這個數(shù)據(jù),就是芯片執(zhí)行“基本塊”所需的平均周期數(shù),不需要手動添加任何特征。就算輸入之前沒有“看到”過的基本塊和芯片架構(gòu),訓練好的模型也能給出數(shù)字,更準確地預測芯片執(zhí)行代碼的速度。

      正所謂冰凍三尺,并非一日之寒,MIT這款強大工具的誕生也是Step by Step。

      第一步:用“基本塊”訓練標記數(shù)據(jù)

      首先,研究人員提出了一種神經(jīng)網(wǎng)絡(luò)工具———以“基本塊”的形式訓練標記數(shù)據(jù)。這樣做的目的可以自動預測給定芯片中,執(zhí)行基本塊所需要的時間。結(jié)果表明,比起傳統(tǒng)的手工調(diào)整模型,精確度上要高得多。

      這個工具叫做Ithemal,研究還發(fā)表在了ICML 2019上。Ithemal的全名叫做“Instruction THroughput Estimator using MAchine Learning”。

      受深度神經(jīng)網(wǎng)絡(luò)的靈感,它采用了一種新型的數(shù)據(jù)驅(qū)動方法來預測一條指令塊的吞吐量。Ithemal將吞吐量估計問題建模為一個回歸任務(wù),并利用DNN使用大量標記數(shù)據(jù)集將序列映射為實際值的吞吐量,以此來學習如何預測。更具體點來說,Ithemal使用分層多尺度RNN,讓每條指令生成一個獨立的嵌入,然后依次結(jié)合指令嵌入來預測吞吐量。

      在所有基準測試中,平均絕對百分誤差(MAPE)降低了50 %以上,同時仍然提供了較快的估計速度。在生成高質(zhì)量的預測時,Ithemal只需要訓練數(shù)據(jù)和ISA的規(guī)范,包括指令規(guī)范及其顯式和隱式操作數(shù)。與分析模型不同,Ithemal不需要任何明確的規(guī)范或建模,只需要學習有助于提高吞吐量的任何顯著的微體系結(jié)構(gòu)細節(jié)即可。

      第二步:推出性能模型驗證套件

      接著,在2019年11月的IEEE International Symposium on Workload Characterization大會上,研究人員提出了一個基準測試套件。這個套件由來自不同領(lǐng)域的基本塊組成,包括機器學習、編譯器、密碼學和圖形,可以用來驗證性能模型。值得注意的是,這項研究是和谷歌合力完成。他們將30多萬個數(shù)據(jù)塊匯集到了BHive,這是對x86-64基本塊的性能模型進行系統(tǒng)驗證的基準。

      研究人員使用BHive評估了4個現(xiàn)有的性能模型:IACA,llvm-mca,Ithemal,OSACA。

      在他們的評估中,Ithemal預測英特爾芯片運行代碼的速度,要比英特爾自己建立的性能模型還要快。并且,研究人員的數(shù)據(jù)集很好地捕捉了2個Google應用程序的基本屬性:Spanner和Dremel。

      到了這一步,開發(fā)人員和編譯器可以使用該工具來生成代碼,這些代碼可以在多樣化“黑盒子”芯片設(shè)計上更快、更高效地運行。

      電子工程與計算機科學(EECS)系助理教授Michael Carbin表示:現(xiàn)代的計算機處理器不透明,復雜得可怕、難以理解。編寫對這些處理器執(zhí)行盡可能快的計算機代碼也面臨巨大的挑戰(zhàn)。

      這個工具是朝著對這些芯片的性能進行完全建模,以此來提高效率的重要一步。

      第三步:自動生成編譯器優(yōu)化

      最后,在NeurIPS會議上,研究人員提出了一種自動生成編譯器優(yōu)化的新技術(shù)。具體來說,他們自動生成一個算法,稱為Vemal,將特定的代碼轉(zhuǎn)換為向量,可用于并行計算。相對于LLVM編譯器(業(yè)界流行的編譯器)中使用的手工矢量化算法,Vemal的性能要更好。這主要是探討了擬合一個圖神經(jīng)網(wǎng)絡(luò)策略來模擬由其整數(shù)線性規(guī)劃(LP)解所做出的最優(yōu)決策是否可行。

      結(jié)果表明,該策略生成的矢量化方案在靜態(tài)度量和運行時,性能上都優(yōu)于行業(yè)標準的編譯啟發(fā)式算法。

      來自MIT計算機科學與人工智能實驗室

      這3篇論文,均出自MIT人工智能研究重地———計算機科學與人工智能實驗室,簡稱CSAIL。核心人物為Charith Mendis,他出生于斯里蘭卡,讀碩士的時候來到麻省理工,是ACM Fellow,CSAIL學術(shù)帶頭人Saman Amarasinghe的關(guān)門弟子。

      CharithMendis 2015年在微軟雷蒙德研究院實習,主要的研究方向就是編譯器、程序分析與機器學習。

      他希望,未來大多數(shù)編譯器優(yōu)化將自動生成和學習,而不是手動編寫。它們不僅會產(chǎn)生更快的代碼,而且將更易于開發(fā)和維護?,F(xiàn)在一系列的工作,就是在朝著這個方向發(fā)展。而眼前的下一步,他們將會著力研究使模型可解釋的方法,弄清楚為什么特定的模型會做出預測。

      猜你喜歡
      代碼英特爾架構(gòu)
      基于云控平臺霧計算架構(gòu)的網(wǎng)聯(lián)汽車路徑控制
      英特爾發(fā)布第三代英特爾至強可擴展處理器
      英特爾宣布發(fā)售英特爾Stratix?誖10 TX FPGA
      神秘的代碼
      英特爾召回
      一周機構(gòu)凈增(減)倉股前20名
      重要股東二級市場增、減持明細
      近期連續(xù)上漲7天以上的股
      VIE:從何而來,去向何方
      企業(yè)架構(gòu)的最佳實踐
      乐亭县| 昆山市| 五寨县| 凭祥市| 望都县| 宜春市| 沾益县| 保康县| 花莲市| 平谷区| 漳州市| 内黄县| 防城港市| 阿瓦提县| 巴彦县| 海盐县| 正阳县| 昌都县| 西盟| 元朗区| 敦煌市| 东乡族自治县| 承德市| 肃南| 枞阳县| 镇赉县| 石楼县| 罗山县| 芜湖市| 和顺县| 江华| 丘北县| 会泽县| 海林市| 长白| 云霄县| 安泽县| 万全县| 焦作市| 深泽县| 新化县|