国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

TVM的編譯流程是什么

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-08 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:安平博,Xilinx高級工程師;來源:AI加速微信公眾號

Import:將tensorflow,onnx,pytorch等構建的深度學習模型導入,轉化成TVM的中間層表示IR。

Lower:將高層IR表示轉化成低階TIR表示。

Codegen:內存分配和硬件可執行程序生成。

圖導入

通過一個tensorflow的reception網絡來熟悉編譯過程,其它深度學習框架也具有類似過程。從TVM官網可以下載tensorflow的編譯程序

https://tvm.apache.org/docs/tutorials/frontend/from_tensorflow.html#sphx...。主要代碼如下:

pIYBAGAJzXaALCrpAAFWLx2Lb50986.png

模型的輸入是一個后綴為pb的文件,它是神經網絡模型圖的protobuf格式存儲文件。Pb是二進制形式,pbtxt是文本形式。Import_graph_def函數是導入pb,graph是tensorflow的圖結構。

From_tensorflow是將tensorflow的圖結構轉化成TVM的IR。這個函數在文件relay/frontend/tensorflow.py中。函數的調用關系為:

From_tensorflow -> GraphProto.from_tensorflow -> self._get_relay_func。

在get_relay_func中會遍歷每個tensorflow的節點,轉換成tvm的IR表示。重點關注_backtrack_construct函數。

o4YBAGAJzbSAK8pmAAB-23TNiAc840.png

繼續深入和算子轉化有關的函數調用為:_convert_operator -> convert_map。Convert_map中對應了可支持tensorflow算子到tvm算子的轉換關系。

o4YBAGAJzf2AUd9qAAFas--JyZk610.png

完成了tensorflow到TVM算子轉化后,我們就得到了一個IRModule。我們可以利用tvm的可視化來打印出轉化后的圖:

pIYBAGAJzjyAKM_nAADUALHuUtg377.png

Main是主函數入口,在TVM中以函數形式反應了tensorflow的圖結構。函數的調用關系反應了圖的依賴關系。

編譯

Python中主要代碼位于relay/build_module.py文件中,調用關系為build -> BuildModule -> build。在build中通過字典獲得了C++中的相應函數。

pIYBAGAJznqAYLYUAABvCn74q78151.png

這里不明白如何通過self.mod[“build”]得到C++中函數的。_BuildModule()是C++中注冊到環境中的一個函數。在src/relay/backend/build_module.cc中,

pIYBAGAJzriAKFTzAACbMqgRaW0007.png

TVM_REGISTER_GLOBAL是將C++函數注冊到一個全局map中。當python加載編譯好的動態庫時,會自動查詢map中靜態注冊的函數,并添加到python模塊當中。

真正build操作位于RelayBuildModule類中,在其中有一個GetFunction函數,會通過名字查詢要使用的函數,打包成PackedFunc返回,這個函數可能和self.mod[“build”]有關。PackedFunc是TVM中提供的python的一個接口,任何函數都可以封裝成PackedFunc,并給python調用。更詳細介紹可看:https://hjchen2.github.io/2020/01/10/TVM-PackedFunc%E5%AE%9E%E7%8E%B0%E6...

繼續深入代碼,Build -> BuildRelay。這是編譯的主要代碼。其過程包括optimize,codgen。

o4YBAGAJzvmAY7f2AAE5GDTVjbI659.png

Optimize就是執行一些優化passes,這些passes包括常數折疊,算符融合等。之后會調用graph_codegen->Codegen。Codegen中實現了內存分配和硬件代碼生成。

審核編輯:何安

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

    關注

    0

    文章

    19

    瀏覽量

    3955
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    簡單高效的鴻蒙編譯提速技巧

    在鴻蒙應用開發中編譯構建是開發者最頻繁的操作,每一次編譯提速都能顯著提升項目整體開發效率。本次分享幾個簡單卻高效的鴻蒙編譯提速技巧,從編譯配置、構建方式等維度進行優化,讓你的開發
    的頭像 發表于 03-04 16:09 ?32次閱讀
    簡單高效的鴻蒙<b class='flag-5'>編譯</b>提速技巧

    踩坑實錄:RK3588單獨編譯boot.img無法啟動?這個GPU配置才是關鍵!

    做 RK3588 嵌入式開發的同學,大概率都遇到過 “編譯成功卻啟動失敗” 的糟心場景 —— 明明按官方流程單獨編譯了 boot.img,燒錄后設備卻卡在開機 logo,或者直接進入不了系統,查日志、換
    的頭像 發表于 02-10 16:54 ?2065次閱讀
    踩坑實錄:RK3588單獨<b class='flag-5'>編譯</b>boot.img無法啟動?這個GPU配置才是關鍵!

    初次編譯rk3568(rk3576)Linux 6.1內核踩坑記錄:從報錯終止到成功解決的完整流程

    很多剛接觸瑞芯微 rk 系列芯片開發的小伙伴,在初次編譯基于 Linux 6.1 內核的系統時,很容易因為環境依賴問題卡殼。最近我在編譯 rk3576(rk3568 流程類似)Linux 6.1 內核時就遇到了典型報錯,從定位問
    的頭像 發表于 02-06 16:47 ?2572次閱讀
    初次<b class='flag-5'>編譯</b>rk3568(rk3576)Linux 6.1內核踩坑記錄:從報錯終止到成功解決的完整<b class='flag-5'>流程</b>

    技術分享 | RK3506如何交叉編譯frp wireguard

    RK3506擁有著不錯的性價比以及與之相匹配的性能優勢,非常適合用來做邊緣計算網關、小型數據收集端點等。今天給大家帶來兩款內網穿透工具的交叉編譯移植,方便在RK3506上搭建相關應用。在編譯兩個工具
    的頭像 發表于 12-25 17:29 ?582次閱讀
    技術分享 | RK3506如何交叉<b class='flag-5'>編譯</b>frp wireguard

    RK3588?平臺?MPP?編譯?+ VPU?格式測試

    ? ? ? ? ? ? 大家在做瑞芯微 ?RK3588? 開發時,是不是經常困惑「怎么驗證? VPU? 到底支持哪些編解碼格式?」「 MPP? 媒體庫該怎么編譯?」今天手把手帶你走一遍流程
    的頭像 發表于 12-25 11:33 ?1879次閱讀
    RK3588?平臺?MPP?<b class='flag-5'>編譯</b>?+ VPU?格式測試

    泰凌微:布局端側AI,產品支持谷歌LiteRT、TVM開源模型

    。 ? 公司發布的基于TL721X系列芯片的TL-EdgeAI平臺,支持谷歌LiteRT、TVM等開源模型,是目前世界上功耗最低的智能物聯網連接協議平臺。其芯片已在谷歌(Google)的Pixel Bud Pro 2智能耳機方案中被采用。公司將繼續深化與谷歌的合作關系。 ? 圍繞三
    的頭像 發表于 12-15 08:21 ?1w次閱讀

    一文詳解SystemC仿真庫的編譯

    AMD Vivado 設計套件以文件和庫的形式提供仿真模型。仿真庫包含器件和 IP 的行為和時序模型。編譯后的庫可供多個設計項目使用。用戶必須在設計仿真之前通過名為 compile_simlib 的實用程序編譯這些文件,以便為目標仿真器
    的頭像 發表于 12-12 15:08 ?4820次閱讀
    一文詳解SystemC仿真庫的<b class='flag-5'>編譯</b>

    高頻OTA時代,如何用SIL測試兼顧軟件可靠性和迭代速度?

    仿真技術,支持實現多個測試節點并行測試,從而支撐軟件敏捷開發流程TVM具備虛擬控制器(vECU)生成、虛擬控制器(vECU)集成、對象模型集成、虛擬總線仿真、虛擬測量
    的頭像 發表于 12-10 17:27 ?1843次閱讀
    高頻OTA時代,如何用SIL測試兼顧軟件可靠性和迭代速度?

    開源鴻蒙技術大會2025丨編譯器與編程語言分論壇:語言驅動系統創新,編譯賦能生態繁榮

    在萬物智聯的時代背景下,操作系統底層能力的構建離不開編程語言與編譯器的關鍵支撐。作為開源鴻蒙生態的核心技術,語言設計與編譯器、虛擬機實現的進步直接關系到開發效率、運行性能與系統安全。本次分論壇聚焦
    的頭像 發表于 11-20 17:24 ?917次閱讀
    開源鴻蒙技術大會2025丨<b class='flag-5'>編譯</b>器與編程語言分論壇:語言驅動系統創新,<b class='flag-5'>編譯</b>賦能生態繁榮

    CANoe與Simulink聯合仿真編譯失敗

    問題描述:在使用VS作為編譯器的情況下,Matlab編譯后失敗,如下圖:解決方案:原因:安裝VS時,Windows的SDK版本未安裝或者安裝選項沒有選擇正確。1.打開VS,可以看到VS中的錯誤提示:2.打開此項目的屬性設置:3.選擇正確的SDK版本4.選擇修改5.重新安裝
    的頭像 發表于 11-14 12:13 ?1866次閱讀
    CANoe與Simulink聯合仿真<b class='flag-5'>編譯</b>失敗

    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Qt工程編譯、GPU核心使用說明

    本文圍繞創龍科技研發的評估板,詳細說明 Qt 工程編譯與 GPU 核心使用方法。涵蓋基于命令行和 Qt Creator 工具的 Qt 工程編譯流程,包括交叉編譯工具鏈、Qt Versi
    的頭像 發表于 09-29 14:16 ?719次閱讀
    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Qt工程<b class='flag-5'>編譯</b>、GPU核心使用說明

    大規模硬件仿真系統的編譯挑戰

    引言隨著集成電路設計復雜度的不斷提升,硬件仿真系統在現代芯片設計流程中扮演著越來越重要的角色。基于FPGA(現場可編程門陣列)的商用硬件仿真系統因其靈活性、全自動化、高性能和可重構性,成為驗證
    的頭像 發表于 03-31 16:11 ?1440次閱讀
    大規模硬件仿真系統的<b class='flag-5'>編譯</b>挑戰

    在 Windows 上編譯 KiCad

    “?Ethan 同學為我們分享了在 Windows 編譯 KiCad 的準備工作、操作步驟及閉坑指南。以下是核心的操作視頻及 PPT,完整的直播視頻后續分享給大家!?” 流程概要 準備工作 編譯器篇
    的頭像 發表于 03-28 11:23 ?1050次閱讀
    在 Windows 上<b class='flag-5'>編譯</b> KiCad

    FPGA Verilog HDL語法之編譯預處理

    Verilog HDL語言和C語言一樣也提供了編譯預處理的功能。“編譯預處理”是Verilog HDL編譯系統的一個組成部分。Verilog HDL語言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發表于 03-27 13:30 ?1435次閱讀
    FPGA Verilog HDL語法之<b class='flag-5'>編譯</b>預處理

    KiCad直播活動(三):在 Windows上編譯KiCad 手把手教您編譯/構建 KiCad 源碼

    親愛的 KiCad 粉們: 本周繼續 KiCad 的直播活動,我們將在 3 月27 日周四晚 19:30 為您帶來 “在 Windows 上編譯 KiCad” 的專題!邀請了 KiCad Lead
    的頭像 發表于 03-24 11:14 ?1672次閱讀
    KiCad直播活動(三):在 Windows上<b class='flag-5'>編譯</b>KiCad 手把手教您<b class='flag-5'>編譯</b>/構建 KiCad 源碼