最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【2023 · CANN訓(xùn)練營(yíng)第一季】——Ascend C算子開發(fā)入門——第三次課

2023-05-31 01:21 作者:CallMeDaYao-2022  | 我要投稿

前言:昇騰AI處理器的算子開發(fā)增加了一種新的方式,稱之為TIK2,正式名稱是Ascend C算子開發(fā)。不同于采用Python的DSL和TIK方式,Ascend C算子使用C/C++作為前端語(yǔ)言的算子開發(fā)工具,通過(guò)四層接口抽象、并行編程范式、孿生調(diào)試等技術(shù),極大提高了算子的開發(fā)效率,助力AI開發(fā)者低成本完成算子開發(fā)和模型調(diào)優(yōu)部署。為了幫助開發(fā)者快速掌握這一新的技術(shù),2023 CANN訓(xùn)練營(yíng)第一季同步開設(shè)了相關(guān)課程,總共有三節(jié)課。

????????第三節(jié)課的主要內(nèi)容,是掌握端到端的Ascend C算子開發(fā)流程。掌握Ascend C矢量算子動(dòng)態(tài)shape輸入的實(shí)現(xiàn);掌握cpu模式下的算子調(diào)試技術(shù);掌握UT和ST的測(cè)試編碼方法;了解NPU模式下性能采集與分析。

課程地址:CANN訓(xùn)練營(yíng)2023年第一季_TIK2算子開發(fā)入門

https://www.hiascend.com/zh/developer/courses/detail/1627494761683783682

課程視頻:發(fā)布在B站“昇騰Ascend”:

第1次課:【2023? CANN訓(xùn)練營(yíng)第一季】-TIKC++算子開發(fā)入門(上)

https://www.bilibili.com/video/BV1ha4y1V7vK

第2次課:【2023? CANN訓(xùn)練營(yíng)第一季】-TIKC++算子開發(fā)入門(中)

https://www.bilibili.com/video/BV1Pa4y157RG/

第3次課:【2023? CANN訓(xùn)練營(yíng)第一季】-TIKC++算子開發(fā)入門(下)

https://www.bilibili.com/video/BV1yM411g7nw

技術(shù)文檔:文檔首頁(yè)>CANN社區(qū)版>6.3.RC2.alpha001>算子開發(fā)>TIK C++算子開發(fā)>TIK C++簡(jiǎn)介”https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/63RC2alpha001/operatordevelopment/tik2opdevg/atlastik2_10_0001.html

????????本次課的內(nèi)容要點(diǎn)如下:

一、動(dòng)態(tài)shape算子——將第二次課固定shape的add算子改造成動(dòng)態(tài)shape的add算子。

一)概念? ? ????

????????動(dòng)態(tài)shape和固定shape是一對(duì)概念。固定shape是指,在編譯時(shí)指定shape大小,運(yùn)行時(shí)不需要指定shape大小。在開發(fā)固定shape算子過(guò)程中,一個(gè)算子源代碼可以支持多個(gè)固定shape,但需要在編譯時(shí)明確了shape的實(shí)際值。而動(dòng)態(tài)shape則是在編譯時(shí)不指定shape大小,在運(yùn)行時(shí)傳入實(shí)際的shape大小,算子編譯后的二進(jìn)制文件支持任意shape,或者是一個(gè)或多個(gè)shape范圍。

二)將固定shape算子改成動(dòng)態(tài)shape

????????課程的第二次課,講述是采用固定shape的加法示例,本次課講述,如何將固定shape改為動(dòng)態(tài)shape的算子。也就是,將控制形狀的BLOCK DIM,TOTAL LENGTH,TILE NUM這些變量做成tiling結(jié)構(gòu)體,作為參數(shù)傳給核函數(shù)。如下圖所示:

三)動(dòng)態(tài)shape算子的tiling結(jié)構(gòu)體

1、主要操作流程

2、tiling結(jié)構(gòu)體中的信息

3、動(dòng)態(tài)shape算子的tiling解析函數(shù)

?

4、固定與動(dòng)態(tài)shape對(duì)比——核函數(shù)

5、固定與動(dòng)態(tài)shape對(duì)比——kernelAdd類

????????主要差別有兩點(diǎn),如下圖所示:

6、固定與動(dòng)態(tài)shape對(duì)比——Init()函數(shù)

7、固定與動(dòng)態(tài)shape對(duì)比——真值生成腳本

8、固定與動(dòng)態(tài)shape對(duì)比——main.cpp

????????差異在于動(dòng)態(tài)shape,需要根據(jù)輸入的tiling計(jì)算出實(shí)際的數(shù)據(jù)大小。

? ?????????綜上,固定shape和動(dòng)態(tài)shape代碼文件的差別如下:

四)運(yùn)行結(jié)果

二、功能調(diào)試

cpu模式下的算子功能調(diào)試。TIK C++提供孿生調(diào)試方法,即在cpu側(cè)創(chuàng)建一個(gè)npu的模型并模擬它的計(jì)算行為,用來(lái)進(jìn)行業(yè)務(wù)功能調(diào)試。以此進(jìn)行業(yè)務(wù)功能的調(diào)試。相同的算子代碼可以在CPU莫斯下進(jìn)行精度調(diào)試,然后無(wú)縫切換到NPU模式下運(yùn)行,主要有兩種方法:

1、使用GDB進(jìn)行調(diào)試

2、使用printf后者std::cout

????????在CPU代碼側(cè)直接插入c/C++的打印命令,如printf、std:.cout,但注意NPU模式下不支持打印語(yǔ)句,所以需要添加內(nèi)置宏__CCE KT TEST__ 予以區(qū)分。

三、測(cè)試驗(yàn)證

單元測(cè)試和集成測(cè)試

一)環(huán)境安裝

????????需要安裝CANN開發(fā)環(huán)境和算子開發(fā)包。以root用戶為例,默認(rèn)安裝路徑:

toolkit:/usr/local/Ascend/ascend-toolkit/latest;

算子開發(fā)包:/usr/local/Ascend/ascend-toolkit/latest/opensdk

二)UT測(cè)試

????????UT的本質(zhì)是使用內(nèi)核調(diào)用符測(cè)試CPU模式下的TIK C++算子用例。

????????UT測(cè)試的步驟:

????????為Ascend C自定義算子添加UT測(cè)試步驟:

三)ST測(cè)試

????????ST的本質(zhì)是創(chuàng)建ACL應(yīng)用程序測(cè)試NPU模式下的TIK C++算子用例,將開發(fā)好的算子,編譯好后,打包成自定義算子包,部署到系統(tǒng)中。

為TIK C++自定義算子添加ST測(cè)試步驟:

一)op_host/add_tik2_tiling.h

二)?op_host/add_tik2.cpp

????????host側(cè)算子實(shí)現(xiàn)開發(fā),包括算子原型注冊(cè)、Shape推導(dǎo)等函數(shù)實(shí)現(xiàn)與注冊(cè)、Tiling實(shí)現(xiàn)與注冊(cè)和信息庫(kù)配置.

1、算子原型注冊(cè)

????????算子原型描述了算子的輸入輸出,屬性等信息,算子原型注冊(cè)用于將算子注冊(cè)到算子原型庫(kù)中。

2、Shape推導(dǎo)等函數(shù)實(shí)現(xiàn)與注冊(cè)

????????根據(jù)算子的輸入張量描述、算子邏輯及算子屬性,推理出算子的輸出張量描述,包括張量的Shape,數(shù)據(jù)類型及數(shù)據(jù)排布格式等信息。這樣算子構(gòu)圖準(zhǔn)備階段就可以為所有的張量靜態(tài)分配內(nèi)存,避免動(dòng)態(tài)內(nèi)存分配帶來(lái)的開銷。

3、Tiling實(shí)現(xiàn)與注冊(cè)

????????計(jì)算數(shù)據(jù)切分過(guò)程相關(guān)的參數(shù),比如每次計(jì)算的數(shù)據(jù)量大小。

4、信息庫(kù)配置(根據(jù)運(yùn)行平臺(tái)進(jìn)行配置)

????????算子開發(fā)者需要通過(guò)配置算子信息庫(kù)文件,將算子在異騰A處理器上相關(guān)實(shí)現(xiàn)信息注冊(cè)到算子信息庫(kù)中。

三)run_case.sh與test_add_tik2_data.py

四)生成測(cè)試用例與報(bào)告st report.json

四、性能采集——msprof

????????當(dāng)使用內(nèi)核調(diào)用符時(shí),會(huì)生成相應(yīng)的二進(jìn)制可執(zhí)行文件,可以使用性能采集工具運(yùn)行NPU模式下生成的可執(zhí)行文件從而采集Ascend C算子在昇騰平臺(tái)上執(zhí)行的性能數(shù)據(jù)。



【2023 · CANN訓(xùn)練營(yíng)第一季】——Ascend C算子開發(fā)入門——第三次課的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
济源市| 合川市| 新巴尔虎右旗| 根河市| 始兴县| 安溪县| 台北市| 比如县| 清丰县| 历史| 清苑县| 铁岭县| 大同县| 闽侯县| 通海县| 合山市| 东兰县| 凤山县| 盖州市| 汤原县| 定陶县| 博乐市| 津南区| 涞源县| 海口市| 柳江县| 延安市| 安丘市| 康马县| 黔南| 霸州市| 南华县| 抚顺市| 攀枝花市| 日土县| 周宁县| 五常市| 呼和浩特市| 扎兰屯市| 越西县| 葫芦岛市|