TNN源码阅读笔记(一)

最近看了下TNN的源码,打算记录一下源码阅读笔记。

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

克隆下tnn,看下目录结构:


image.png
  • benchmark:模型的benchmark和层的benchmark
  • cmake:底下就一个cmake 文件,不同的系统设置不同类型的库
  • doc:相关文档
  • examples:包括android、ios、armlinux的例子,samples是封装的tnn api的调用接口
  • include:tnn暴露给用户的api头文件,即这个文件夹下的头文件是用户可以引用的
  • model:一些基准模型
  • platforms:不同平台的调用,包括android、ios、linux和mac
  • scripts:不同平台编译脚本,包括aarch64、android、armhf_linux、ios等
  • source:和上面的include共同构成了主要的tnn源码
  • test:测试代码,包含层的单元测试
  • third_party:一些第三方工具,gflags用于参数解析、opencl用于加速计算、stb用于图片load、save、resize等
  • tools:模型量化工具、模型转换工具等
  • Dockerfile:用于构建docker环境,可方便使用docker进行模型转换等操作
  • CMakeLists.txt:CMake编译文件

接下来要阅读的代码重点在include、source以及tools。
先看一眼source的文件夹目录:


image.png
  • core:图和层的各种类和接口
  • device:各个加速平台的算子计算,包括arm、metal和opencl
  • interpreter:模型解析,包括TNN和NCNN模型
  • layer:层的声明与注册
  • memory_manager:内存管理
  • optimizer:优化操作,包括一些层的合并,删除等
  • utils:一些辅助函数和工具,比如检测框的工具,bf16的工具,字符串操作工具等

你可能感兴趣的:(TNN源码阅读笔记(一))