資料介紹
軟件簡(jiǎn)介
圖引擎模塊(GE)由C++實(shí)現(xiàn),位于前端模塊MindSpore/Tensorflow和底層硬件之間,起到承接作用。圖引擎模塊以ME/TF下發(fā)的圖作為輸入,然后進(jìn)行一系列的深度圖優(yōu)化操作,最后輸出一張可以在底層硬件上高效運(yùn)行的圖。GE針對(duì)昇騰AI處理器的硬件結(jié)構(gòu)特點(diǎn),做了特定的優(yōu)化工作,以此來充分發(fā)揮出昇騰AI處理器的強(qiáng)大算力。在進(jìn)行模型訓(xùn)練/推理時(shí),GE會(huì)被自動(dòng)調(diào)用而用戶并不感知。GE主要由GE API和GE Core兩部分組成,詳細(xì)的架構(gòu)圖如下所示。
-
GE API
GE API是連接前端模塊ME/TF和GE Core的接口,負(fù)責(zé)GE Core中初始化、Session管理模塊的接口,支持運(yùn)行環(huán)境初始化,Session創(chuàng)建、銷毀,圖添加執(zhí)行。
-
GE Core
GE Core是GE的核心模塊,負(fù)責(zé)整個(gè)訓(xùn)練過程中的圖管理。GE Core中的圖處理可細(xì)分為六大步驟,分別是圖準(zhǔn)備、圖拆分、圖優(yōu)化、圖編譯、圖加載和圖執(zhí)行,對(duì)于ME下發(fā)的每一張圖都會(huì)經(jīng)過這六個(gè)步驟的操作,最終得到可以直接在底層硬件上高效執(zhí)行的圖。
-
圖準(zhǔn)備 & 整圖優(yōu)化
完成整圖級(jí)別的數(shù)據(jù)準(zhǔn)備和優(yōu)化,涉及到IR庫及算子庫。使用IR庫中算子的InferShape函數(shù),完成整圖的Shape推導(dǎo),以便后續(xù)申請(qǐng)內(nèi)存;同時(shí)根據(jù)算子的聚合屬性,完成某些算子的聚合優(yōu)化,如allreduce算子,會(huì)按照聚合參數(shù),將若干各參數(shù)對(duì)應(yīng)梯度的allreduce算子聚合為一個(gè),以此減少通訊耗時(shí)。
-
圖拆分
昇騰AI處理器是一種異構(gòu)芯片,含有CPU(AICPU)和向量計(jì)算部件AICORE,圖中每個(gè)算子會(huì)按照開銷模型選擇執(zhí)行的核心,此階段會(huì)對(duì)算子進(jìn)行最優(yōu)的核心分配,每種核心對(duì)應(yīng)軟件上的一個(gè)抽象引擎;按照之前對(duì)各算子的引擎分配,以引擎為邊界,將整圖拆分為若干子圖,在圖邊界算子上插入相應(yīng)的Placeholder算子以做標(biāo)識(shí),之后的優(yōu)化、編譯、加載操作均會(huì)以子圖為單位進(jìn)行,這樣可以有效減少優(yōu)化過程的耗時(shí)。
-
子圖優(yōu)化
根據(jù)子圖所屬引擎,調(diào)用不同的優(yōu)化器接口執(zhí)行優(yōu)化。為了充分發(fā)揮昇騰AI處理器中AICORE模塊的算力,在AICORE內(nèi)CUBE單元進(jìn)行計(jì)算的算子會(huì)采用一種5D的數(shù)據(jù)格式,圖優(yōu)化階段會(huì)對(duì)相應(yīng)算子進(jìn)行4D/5D的類型轉(zhuǎn)換;為了進(jìn)一步發(fā)揮CUBE單元的算力,減少數(shù)據(jù)搬運(yùn)次數(shù),GE會(huì)對(duì)某種范式的算子連接進(jìn)行融合操作,此步驟也在圖優(yōu)化階段進(jìn)行;對(duì)所有子圖優(yōu)化之后,需進(jìn)行算子運(yùn)行屬性計(jì)算,以計(jì)算輸入輸出內(nèi)存大小。
-
圖編譯 & 圖加載
GE采用即時(shí)算子編譯技術(shù),即按照實(shí)際網(wǎng)絡(luò)結(jié)構(gòu)即時(shí)編譯生成算子可執(zhí)行程序,同時(shí)完成內(nèi)存復(fù)用與內(nèi)存分配、流分配、算子可執(zhí)行程序加載等。每個(gè)算子執(zhí)行任務(wù)綁定到特定的流上,同一個(gè)流的任務(wù)是串行執(zhí)行的,不同流上的任務(wù)可以并行執(zhí)行。圖加載階段按照引擎歸屬的runtime,將子圖加載到硬件上準(zhǔn)備執(zhí)行。
-
圖執(zhí)行
最終在硬件上執(zhí)行子圖,并返回相應(yīng)的輸出值。為了提高運(yùn)行效率,圖執(zhí)行階段提供了一種下沉模式,可以在底層硬件上連續(xù)運(yùn)行多輪再返回輸出值,以此減少從底層硬件拷貝數(shù)據(jù)的次數(shù)。
-
在訓(xùn)練/推理過程中,上述過程會(huì)自動(dòng)執(zhí)行,通過上述圖操作,GE可以將前端下發(fā)的圖轉(zhuǎn)換為一種可以在昇騰AI處理器上高效運(yùn)行的圖模式。
安裝說明
安裝GE
GE內(nèi)嵌在MindSpore/Ascend安裝包中,MindSpore/Ascend安裝完畢后,GE以動(dòng)態(tài)庫的方式被調(diào)用。
源碼安裝
GE也支持由源碼編譯,進(jìn)行源碼編譯前,首先確保你有昇騰910 AI處理器的環(huán)境(可通過昇騰開發(fā)者社區(qū)獲?。?,同時(shí)系統(tǒng)滿足以下要求:
- GCC >= 7.3.0
- CMake >= 3.14.0
- Autoconf >= 2.64
- Libtool >= 2.4.6
- Automake >= 1.15.1
編譯完成后會(huì)生成幾個(gè)動(dòng)態(tài)庫,他們會(huì)鏈接到MindSpore/Ascend中執(zhí)行,無法單獨(dú)運(yùn)行。
-
下載GE源碼。
GE源碼托管在碼云平臺(tái),可由此下載。
git clone https://gitee.com/mindspore/graphengine.git cd graphengine
-
在GE根目錄下執(zhí)行下列命令即可進(jìn)行編譯。
bash build.sh
- 開始編譯之前,請(qǐng)確保正確設(shè)置相關(guān)的環(huán)境變量。
-
在
build.sh
的腳本中,會(huì)進(jìn)行git clone
操作,請(qǐng)確保網(wǎng)絡(luò)連接正常且git配置正確。 -
在
build.sh
的腳本中,默認(rèn)會(huì)8線程編譯,如果機(jī)器性能較差,可能會(huì)編譯失敗??梢酝ㄟ^-j{線程數(shù)}
來控制線程數(shù),如bash build.sh –j4
。
-
完成編譯后,相應(yīng)的動(dòng)態(tài)庫文件會(huì)生成在output文件夾中。
更多指令幫助,可以使用:
bash build.sh –h
如果想清除歷史編譯記錄,可以如下操作:
rm -rf build/ output/ bash build.sh
社區(qū)
- MindSpore Slack?- 可以提問和找答案。
貢獻(xiàn)
歡迎參與貢獻(xiàn),更多信息詳見Contributor Wiki。
路標(biāo)
以下將展示graphengine近期的計(jì)劃,我們會(huì)根據(jù)用戶的反饋訴求,持續(xù)調(diào)整計(jì)劃的優(yōu)先級(jí)。
總體而言,我們會(huì)努力在以下幾個(gè)方面不斷改進(jìn)。
1、完備性:Cast/ConcatV2算子支持輸入數(shù)據(jù)類型為int64的常量折疊; 2、完備性:onnx parser支持一對(duì)多映射; 3、架構(gòu)優(yōu)化:ATC解耦并遷移至parser; 4、易用性:提供tensorflow訓(xùn)練的checkpoint文件轉(zhuǎn)pb文件的一鍵式轉(zhuǎn)化工具; 5、易用性:提供一鍵式本地編譯環(huán)境構(gòu)建工具; 6、可維測(cè):ATC轉(zhuǎn)換生成的om模型包含框架信息、cann版本信息和芯片信息等;
- C和C++實(shí)物精選《C專家編程》 0次下載
- C和C++經(jīng)典著作《C和指針》 0次下載
- 適用于ADSP-219x處理器的VisualDSP++3.5 C/C++編譯器和庫手冊(cè)
- 適用于SHARC<sup>?</sup>處理器的VisualDSP++<sup>?</sup>5.0 C/C++編譯器手冊(cè)
- 用于SHARC<sup>?</sup>處理器的CrossCore<sup>?</sup>Embedded Studio 2.9.0 C/C++編譯器手冊(cè)
- 用于TigerSHARC處理器的VisualDSP++<sup>?</sup>5.0 C/C++編譯器和庫手冊(cè)
- 適用于Blackfin處理器的VisualDSP++<sup>?</sup>5.0 C/C++編譯器和庫手冊(cè)
- 用于Blackfin<sup>?</sup>處理器的CrossCore<sup>?</sup>Embedded Studio 2.9.0 C/C++編譯器和庫手冊(cè)
- Visual C++和MFC創(chuàng)建的應(yīng)用程序基礎(chǔ)知識(shí) 0次下載
- TMS320C6474數(shù)字信號(hào)處理器硅修訂2.1, 1.2, 1.1, 1.0 勘誤表 4次下載
- OMAPL138B C6-Integra? DSP+ARM? 處理器 6次下載
- TMS320F28x 優(yōu)化C/C++編譯器用戶指南 25次下載
- LonWorks節(jié)點(diǎn)中主從處理器之間IC接口設(shè)計(jì) 18次下載
- Blackfin處理器與音視頻外設(shè)之間的連接
- 安騰處理器中多級(jí)分支預(yù)測(cè)機(jī)制
- 前端總線頻率的類型是什么? 329次閱讀
- 前端總線頻率和內(nèi)存的關(guān)系 476次閱讀
- C++簡(jiǎn)史:C++是如何開始的 637次閱讀
- 射頻前端都包含哪些器件? 2107次閱讀
- 昇騰AI框架全棧深度介紹 3255次閱讀
- CodeGeexX 功能使用 2109次閱讀
- 昇騰AI處理器:全面解密DaVinci架構(gòu) 8856次閱讀
- C++程序異常處理機(jī)制是什么 898次閱讀
- 昇思MindSpore全場(chǎng)景AI框架1.6版本的關(guān)鍵特性 2346次閱讀
- 手機(jī)處理器與電腦處理器的差異分析 9231次閱讀
- 圖解華為昇騰310的用途以及設(shè)計(jì)細(xì)節(jié) 1.9w次閱讀
- 華為推出昇騰910、昇騰310兩款A(yù)I芯片,昇騰910的半精度算力可達(dá)到256 TFLOPs 2w次閱讀
- c++和c語言之間有什么區(qū)別 3.1w次閱讀
- 基于FPGA處理器的C編譯指令 2703次閱讀
- 基于雙MicroBlaze軟核處理器的SOPC系統(tǒng) 4100次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級(jí)說明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論