色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

芯來科技與華東師范大學SOLE實驗室合作推動LLVM/CLANG編譯器優化

芯來科技 ? 來源:芯來科技 ? 2024-06-12 09:09 ? 次閱讀

隨著RISC-V這一革命性的開源指令集架構在全球范圍內的迅速普及,它為半導體行業帶來了前所未有的機遇與挑戰。在此大背景下,芯來科技和華東師范大學SOLE實驗室攜手合作,致力于在RISC-V處理器上進行深入的LLVM/CLANG編譯器優化以及程序性能優化和調優。

我們不僅優化了LLVM編譯器的多個關鍵環節,提升了代碼生成效率和執行性能,還針對視頻編解碼、性能測試等應用場景進行了深入分析和優化,提高了相關軟件的執行效率。

此次合作在RISC-V處理器上實現了一定程度的性能提升,同時,我們也希望能夠為RISC-V性能優化領域的同仁們提供一些有益的借鑒和參考。我們相信,通過持續的技術創新和開放的合作精神,我們可以共同推動這一領域的發展和進步。下面是我們本次合作的主要成果。

一、MCPPass冗余指令的刪除優化

在LLVM-17.x版本當中,生成的RISC-V端代碼會出現冗余數據搬運指令無法刪除的問題,詳情如下圖所示。在兩個紅框顯示的vmv指令當中,v0以及v8寄存器的值都沒有得到改變,但LLVM最終生成的RISC-V代碼依然會對這兩個值進行重復搬運。

0e843102-2858-11ef-91d2-92fbcf53809c.png

冗余vmv指令無法在LLVM/Clang中消除的示例

經過核查,出現該問題的根因是LLVM的Machine Copy Propagation Pass對寄存器使用的Def-Use記錄不當所導致。經過對該問題進行修復后,該工作已經提交到了LLVM的上游倉庫。該優化亦應用到了LLVM多個后端的代碼生成當中,如RISC-V、X86以及AMDGPU的后端代碼生成當中。

二、RVV的低精度數據向量化取余以及右移代碼生成優化

C語言會采用Promotion Rule來保證混合精度或者是低精度數據運算結果的準確性,當遇到低精度數據如int8或者int16類型的數據進行逐元素(Element-Wise)取余或者是算術右移操作時,會先將相應的數據提升至32位,再將結果進行截斷至原來的精度以保證運算結果的正確性。然而,取決于RVV 1.0指令集動態調整元素大小的特性,該過程需要一系列的vsetvli類指令進行操作。

考慮到相關的計算溢出結果以及指令的行為在RVV 1.0指令集中已經得到明確定義,在LLVM編譯器生成相關代碼時可以進行下圖所示的優化:

0e9fdf74-2858-11ef-91d2-92fbcf53809c.png

Element-wise vrem.vv優化前

0eb0ea3a-2858-11ef-91d2-92fbcf53809c.png

Element-wise vrem.vv優化后

0ec36a7a-2858-11ef-91d2-92fbcf53809c.png

Element-wise vsra.vv優化前

0ede5da8-2858-11ef-91d2-92fbcf53809c.png

Element-wise vsra.vv優化后 這些優化不僅可以從指令的語義上保證計算結果的正確性,而且能有效地避免頻繁復雜的數據精度提升與下降操作,這些優化工作亦被提交到了LLVM的上游倉庫當中。

三、FFMPEGX264編解碼熱點采集分析

RISC-V Vector 1.0向量化指令集可以被用于視頻編解碼應用的加速處理當中,而FFMPEG作為最常見的音視頻處理軟件之一,在其關鍵核心且可向量化函數當中,大部分亦都利用RVV 1.0匯編或者Intrinsic進行了重寫。盡管如此,如何針對其常用的x264編解碼功能進行編譯優化機會的探索,依然是提高其執行效率的一個重要手段。

我們采集對比了GCC 14.1與LLVM/Clang 17.2編譯出來的FFMPEG,在進行x264視頻編解碼時的熱點函數,詳情下圖所示。根據結果可以看到,熱點函數都聚集在了libx264的x264_piexel_sad類函數之上。

0ef63bb2-2858-11ef-91d2-92fbcf53809c.png

FFMPEG X264編碼熱點分析(GCC)

0f1eda68-2858-11ef-91d2-92fbcf53809c.png

FFMPEG X264編碼熱點分析(LLVM/Clang)

0f390b7c-2858-11ef-91d2-92fbcf53809c.png

x264_pixel_sad類函數聲明

而這類x264_piexel_sad函數本質上就是一系列的abs函數的處理,這類函數的定義可以如上圖所示。

以16x16的迭代大小為例子,下面的圖分別對比了LLVM/Clang以及GCC在該函數上生成代碼的細致區別(開啟-O3)。

0f59d7f8-2858-11ef-91d2-92fbcf53809c.png

x264_piexel_sad_16x16函數 GCC生成代碼

0f735b56-2858-11ef-91d2-92fbcf53809c.png

x264_piexel_sad_16x16函數 LLVM/Clang生成代碼

可以看到,在默認O3的選項下,GCC生成的代碼對于這類核心函數的處理效率遠不如LLVM/Clang。這是因為GCC默認采用LMUL=1(向量化分組大小為1)的大小進行代碼生成,即其生成的RVV代碼采用的LMUL大小不能高于1。在探索到這些根因后,可以采用GCC最新14.1版本中所提供的-mrvv-max-lmul=dynamic選項對這類生成的代碼進行改進,采用該選項優化后的代碼如下圖所示:

0f92dbca-2858-11ef-91d2-92fbcf53809c.png

LMUL設置為dyanamic時GCC生成的代碼

此時,GCC在此處生成的代碼執行效率已經能夠和LLVM/Clang相匹配。因此,我們在采用GCC編譯的FFMPEG進行x264視頻編解碼時,為了更高的核心代碼執行效率,建議將GCC動態調整LMUL大小的編譯選項進行開啟。

四、CoreMark的JumpThreading優化

Coremark是評估CPU性能常見的一個測試程序,但是采用LLVM/Clang編譯器編譯優化coremark程序跑分效果遠遠比不上GCC,因此我們分析了Coremark程序的熱點函數,發現可以通過Jump Threading技術來進行優化,Jump Threading是一種專門用于控制流程圖(CFG)優化的一種編譯優化技術,它會在執行分支前遇到確定變量的值時,直接執行確認值在分支以后的路徑,即采用無條件的跳轉替代條件跳轉,詳情如下圖所示:

0fab5df8-2858-11ef-91d2-92fbcf53809c.png

優化前的CFG

0fc2d398-2858-11ef-91d2-92fbcf53809c.png

優化后的CFG

該優化會對CFG路徑中變量的值進行掃描遍歷,并尋找到可以利用無條件跳轉替換條件判斷的路徑,并進行基本塊的克隆與路徑的替換??紤]到該掃描過程較為耗時,LLVM中默認的Jump Threading優化采取較為輕量級的掃描方式。通過在芯來編譯工具鏈的LLVM/Clang中引入一系列更為激烈的Jump Threading掃描優化手段后,將采用Clang編譯的CoreMark并運行在芯來N300模擬器上的跑分提升約18%。

0feb7ef6-2858-11ef-91d2-92fbcf53809c.png

LLVM/Clang調優前CoreMark跑分

1000579a-2858-11ef-91d2-92fbcf53809c.png

引入額外Jump Threading優化后的CoreMark跑分

五、SPECCPU2006的編譯選項調優

SPEC CPU 2006 INT是業界常用的CPU性能基準測試套件,為了提高SPEC CPU 2006 INT的測試跑分,常常需要找到更適合的編譯選項來對編譯器進行調優,以獲得更好的SPEC分數。然而,考慮到目前大部分的最佳跑分配置都是利用業界專用編譯器,如IntelICC編譯器以及AMD的AOCC編譯器等進行跑分。對于RISC-V指令集架構平臺,這類專用的編譯器并不能夠適用。同時,假如采用Ref測試集來進行編譯選項的調優,則需要消耗大量的測試時間。

為了加速調優,我們采用了一種更為靈活且快捷的基于Qemu仿真器的動態指令計數對比的編譯選項調優方法。下圖展示了采用GCC-13對SPEC CPU2006 INT的TEST測試集進行選項調優的結果。

10168d26-2858-11ef-91d2-92fbcf53809c.png

SPEC CPU 2006 INT動態指令數目調優結果

經過精心調優的編譯選項在SPEC CPU2006 INT的多項測試程序中顯著降低了動態指令的數量。進一步地,我們在FPGA開發板上進行了實際的性能對比測試。結果表明,這種基于動態指令計數的調優方法不僅有效,而且在資源受限的開發板或仿真CPU主頻受限的FPGA環境中,為編譯選項的優化提供了一種切實可行的策略。這一發現為在類似條件下的性能提升開辟了新的探索路徑。

此次合作是雙方在技術研究和應用開發領域共同努力的成果,它體現了我們團隊在探索和實踐過程中的專注與努力。同時,我們對于能夠參與到產學研合作這一推動技術革新的重要力量中來而深感榮幸。相信通過這樣的合作模式,我們能夠與業界同仁共同學習、相互啟發,為整個技術社區的發展貢獻綿薄之力。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68527
  • 編譯器
    +關注

    關注

    1

    文章

    1624

    瀏覽量

    49108
  • 視頻編解碼
    +關注

    關注

    2

    文章

    54

    瀏覽量

    11748
  • 芯來科技
    +關注

    關注

    0

    文章

    59

    瀏覽量

    2995

原文標題:芯來科技與華東師范大學SOLE實驗室合作推動RISC-V性能優化

文章出處:【微信號:nucleisys,微信公眾號:芯來科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HighTec C/C++編譯器套件全面支持RISC-V IP

    是基于LLVM開源汽車級C/C++編譯器工具,已通過ISO 26262 ASIL D的安全認證。從事RISC-V架構開發的汽車軟件開發者受益于這些工具無縫支持
    的頭像 發表于 12-23 09:04 ?23次閱讀
    HighTec C/C++<b class='flag-5'>編譯器</b>套件全面支持<b class='flag-5'>芯</b><b class='flag-5'>來</b>RISC-V IP

    DFRobot與西北師范大學教育技術學院簽署院企協同育人暨戰略合作協議

    2024 年12 月9 日,上海智位機器人股份有限公司(DFRobot)與西北師范大學教育技術學院“院企協同育人交流暨戰略合作協議簽訂儀式”在甘肅省蘭州市西北師范大學云亭校區舉行。西北師范大學
    的頭像 發表于 12-11 15:12 ?149次閱讀

    分享關于編譯器的科普

    源代碼分析工具和IDE集成。GCC被構建成一個單一的靜態編譯器,這使得它非常難以被作為API并集成到其他工具中。 GCC比Clang
    的頭像 發表于 12-09 09:49 ?85次閱讀

    C7000優化C/C++編譯器

    電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
    發表于 10-30 09:45 ?0次下載
    C7000<b class='flag-5'>優化</b>C/C++<b class='flag-5'>編譯器</b>

    Keil編譯器優化方法

    我們都知道,代碼是可以通過編譯器優化的,有的時候,為了提高運行速度或者減少代碼尺寸,會開啟優化選項。
    的頭像 發表于 10-23 16:35 ?507次閱讀
    Keil<b class='flag-5'>編譯器</b><b class='flag-5'>優化</b>方法

    龍芯中科與南京師范大學達成產教合作

    近日,龍芯中科副總裁杜安利一行前往南京師范大學電氣與自動化工程學院(以下簡稱“南師大電自學院”),雙方就科研合作、實驗室共建、3D打印裝備、人才培養、課程思政等展開深入交流合作。南師大
    的頭像 發表于 07-17 14:51 ?580次閱讀

    華東師范大學的老師 上課已經用上了大模型

    數據具有非獨占性、非排他性和非稀缺性。海量數據的產生和數據處理技術的飛速進步,驅動了人工智能等新興技術的崛起。 科學研究作為認識世界的重要手段,其范式也受到數據和技術發展的影響。原有很多科學理論是建立在長期觀察、抽象歸納的基礎上。但在大數據時代,研究者往往先有海量的數據,再通過機器學習等技術從數據中發現規律和洞見,用數據驅動科學發現。
    的頭像 發表于 07-01 15:18 ?185次閱讀
    <b class='flag-5'>華東師范大學</b>的老師 上課已經用上了大模型

    極海半導體-武漢大學MCU聯合實驗室揭牌

    極海半導體-武漢大學 MCU聯合實驗室揭牌儀式在武漢大學信息學部教學實驗大樓隆重舉行。此次儀式標志著極海大學計劃正式落子武漢,雙方在微控制
    的頭像 發表于 06-28 11:36 ?809次閱讀

    SEGGER編譯器優化和安全技術介紹 支持最新C和C++語言

    SEGGER編譯器是專門為ARM和RISC-V微控制設計的優化C/C++編譯器。它建立在強大的Clang前端上,支持最新的C和C++語言功
    的頭像 發表于 06-04 15:31 ?1443次閱讀
    SEGGER<b class='flag-5'>編譯器</b><b class='flag-5'>優化</b>和安全技術介紹 支持最新C和C++語言

    西井科技和香港理工大學簽署合作協議,將共建聯合創新實驗室

    西井科技和香港理工大學簽署了人工智能和自動駕駛方面的深度產學研合作協議,將共建聯合創新實驗室,雙方共同探索該領域的前沿技術和應用實踐。
    的頭像 發表于 04-29 09:42 ?555次閱讀
    西井科技和香港理工<b class='flag-5'>大學</b>簽署<b class='flag-5'>合作</b>協議,將共建聯合創新<b class='flag-5'>實驗室</b>

    采用OpenACC框架的FVCOM模型實現超百倍計算加速

    華東師范大學河口海岸學國家重點實驗室葛建忠教授團隊作為國際先進海洋數值模型 FVCOM 開發團隊核心成員
    的頭像 發表于 04-26 09:44 ?459次閱讀
    采用OpenACC框架的FVCOM模型實現超百倍計算加速

    科大訊飛與華中師范大學合作 大模型賦能教育

    科大訊飛與華中師范大學合作 大模型賦能教育 日前 華中師范大學與科大訊飛股份有限公司簽署戰略合作協議;雙方將圍繞大模型賦能教育教學、科研創新、人才培養、校園服務等方面展開
    的頭像 發表于 04-15 15:12 ?875次閱讀

    浙江大學與燧原科技共建“云邊智能聯合實驗室

    浙江大學控制科學與工程學院與上海燧原科技股份有限公司共同打造的“云邊智能聯合實驗室”近日在浙江大學玉泉校區舉行了隆重的揭牌儀式。這一創新性的合作旨在深度整合雙方資源,共同
    的頭像 發表于 03-28 09:47 ?511次閱讀

    華東師范大學教授:生活中的傳感

    大家·科技前沿 李波 華東師范大學物理與電子科學學院教授,博士生導師 當我們逛街購物時,很多商店的大門都會自動打開,迎接顧客的到來;盥洗室里的水龍頭會在你需要的時候自動出水,從而帶來更加衛生的環境
    的頭像 發表于 02-20 08:41 ?383次閱讀
    <b class='flag-5'>華東師范大學</b>教授:生活中的傳感<b class='flag-5'>器</b>

    ADuCM355硬件參考手冊——Keli編譯

    在 Arm Compiler 5 和 Arm Compiler for Embedded(以前稱為 Arm Compiler 6)之間,底層技術發生了重大變化,從專有編譯器 armcc 轉變為基于開源 LLVM/Clang
    的頭像 發表于 01-12 09:35 ?1359次閱讀
    ADuCM355硬件參考手冊——Keli<b class='flag-5'>編譯</b>版
    主站蜘蛛池模板: 亚洲色综合中文字幕在线| 97在线免费观看视频| 憋尿调教绝望之岛| 久久99热狠狠色AV蜜臀| 双性被疯狂灌满精NP| 7777色鬼xxxx欧美色夫| 果冻传媒在线观看完整版免费| 青草伊人久久| 2022国产91精品久久久久久| 国产乱人视频在线观看| 全黄H全肉禁乱公| 2021国产精品国产精华| 护士的下面又湿又紧10P| 甜性涩爱全集在线观看| caoporn 在线视频| 浪潮色诱AV久久久久久久| 亚洲国产在线精品国偷产拍| 动漫H片在线观看播放免费| 名女躁b久久天天躁| 伊人久久亚洲精品一区| 国产亚洲精品线观看不卡| 三级黄在线| 北条麻妃のレズナンパ| 美女被C污黄网站免费观看| 一线高清视频在线播放| 国产乱码一区二区三区| 色怕怕| 爱暖暖1000部免费| 欧美丰满熟妇BBB久久久| 4399亚洲AV无码V无码网站 | 恋夜直播午夜秀场最新| 亚洲欧美日韩高清中文在线| 国产精品无码亚洲网| 色色色五的天| 纯肉合集(高H)| 妻子的秘密HD观看| 97视频在线观看视频最新| 老师的快感电影完整版| 做暧暧免费30秒体验| 麻豆国产原创中文AV网站| 中文字幕绝色少妇性|