TNN源碼閱讀筆記(一)

最近看了下TNN的源碼,打算記錄一下源碼閱讀筆記。

git clone https://github.com/tencent/tnn

克隆下tnn,看下目錄結(jié)構(gòu):


image.png
  • benchmark:模型的benchmark和層的benchmark
  • cmake:底下就一個(gè)cmake 文件,不同的系統(tǒng)設(shè)置不同類(lèi)型的庫(kù)
  • doc:相關(guān)文檔
  • examples:包括android、ios、armlinux的例子,samples是封裝的tnn api的調(diào)用接口
  • include:tnn暴露給用戶(hù)的api頭文件,即這個(gè)文件夾下的頭文件是用戶(hù)可以引用的
  • model:一些基準(zhǔn)模型
  • platforms:不同平臺(tái)的調(diào)用,包括android、ios、linux和mac
  • scripts:不同平臺(tái)編譯腳本,包括aarch64、android、armhf_linux、ios等
  • source:和上面的include共同構(gòu)成了主要的tnn源碼
  • test:測(cè)試代碼,包含層的單元測(cè)試
  • third_party:一些第三方工具,gflags用于參數(shù)解析、opencl用于加速計(jì)算、stb用于圖片load、save、resize等
  • tools:模型量化工具、模型轉(zhuǎn)換工具等
  • Dockerfile:用于構(gòu)建docker環(huán)境,可方便使用docker進(jìn)行模型轉(zhuǎn)換等操作
  • CMakeLists.txt:CMake編譯文件

接下來(lái)要閱讀的代碼重點(diǎn)在include、source以及tools。
先看一眼source的文件夾目錄:


image.png
  • core:圖和層的各種類(lèi)和接口
  • device:各個(gè)加速平臺(tái)的算子計(jì)算,包括arm、metal和opencl
  • interpreter:模型解析,包括TNN和NCNN模型
  • layer:層的聲明與注冊(cè)
  • memory_manager:內(nèi)存管理
  • optimizer:優(yōu)化操作,包括一些層的合并,刪除等
  • utils:一些輔助函數(shù)和工具,比如檢測(cè)框的工具,bf16的工具,字符串操作工具等
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容