项目目录
本章罗列的部分目录是可选的,请以实际交付件为准。尤其单算子目录,不同场景下交付件有差异。
项目全量目录层级介绍如下:
├── cmake # 项目工程编译目录
│ ├── func.cmake # 公共函数
│ ├── init_env.cmake # 环境初始化
│ ├── makeself_built_in.cmake # makeself内置配置
│ ├── package.cmake # 打包配置
│ ├── variables.cmake # 变量定义
│ └── third_party # 第三方依赖配置
│ └── makeself-fetch.cmake # makeself获取脚本
├── docs # 项目相关文档目录
│ ├── README.md # 文档目录索引
│ ├── implementation.md # 实现说明文档
│ └── zh # 中文文档目录
│ ├── op_list.md # 算子列表
│ ├── context # 公共文档目录
│ ├── invocation # 算子调用文档目录
│ ├── develop # 算子开发文档目录
│ └── debug # 调试调优文档目录
├── include # 头文件目录
│ ├── cann_ops_tensor.h # API头文件
│ └── cann_ops_tensor_types.h # 类型定义头文件
├── lib # 框架代码目录
│ ├── CMakeLists.txt # 库编译配置
│ ├── core # 核心功能模块
│ │ ├── handle.cpp/hpp # 句柄管理
│ │ ├── operation_descriptor.cpp/hpp # 操作描述符
│ │ ├── plan.cpp/hpp # 计划管理
│ │ ├── plan_preference.cpp/hpp # 计划偏好设置
│ │ └── tensor_descriptor.cpp/hpp # 张量描述符
│ ├── elementwise # 逐元素运算模块
│ │ ├── elementwise.cpp/hpp # 逐元素运算基础
│ │ └── elementwise_binary.cpp # 二元逐元素运算
│ └── utils # 工具模块
│ ├── type_utils.hpp # 类型工具
│ ├── utils.cpp # 通用工具函数
│ ├── validation.cpp/hpp # 参数验证
├── scripts # 脚本目录,包含自定义算子、Kernel构建相关配置文件
│ ├── check_build_dependencies.py # 构建依赖检查脚本
│ ├── generate_version_info.py # 版本信息生成脚本
│ └── package # 打包相关脚本
│ ├── common # 公共打包脚本
│ ├── latest_manager # 版本管理
│ ├── module # 模块化打包
│ ├── package.py # 打包Python脚本
│ └── ops_tensor/ # ops_tensor打包配置
│ ├── ops_tensor.xml # 打包配置文件
│ └── scripts/ # 安装/卸载脚本
├── src # 源码目录
│ ├── CMakeLists.txt # 算子编译入口
│ ├── add # add算子目录
│ │ ├── CMakeLists.txt # 算子编译配置文件
│ │ ├── add_kernel.cpp # Kernel实现文件
│ │ ├── add_solution.cpp # Solution实现文件
│ │ ├── arch35 # Ascend950特有算子代码
│ │ └── tests # 算子测试用例目录
│ └── [其他算子目录...] # 其他算子遵循相同结构
├── tests # 项目级测试目录
│ ├── CMakeLists.txt # 测试编译配置
│ ├── all_tests.cpp.in # 测试入口模板
│ ├── test_common.cpp/h # 测试公共代码
│ └── test_elementwise.cpp # 逐元素运算测试
├── CMakeLists.txt # 项目工程cmakelist入口
├── CHANGELOG.md # 变更日志
├── CONTRIBUTING.md # 项目贡献指南文件
├── LICENSE # 许可证文件
├── OAT.xml # OAT测试配置
├── QUICKSTART.md # 快速入门指南
├── README.md # 项目工程总介绍文档
├── SECURITY.md # 安全声明文件
├── build.sh # 项目工程编译脚本
├── install_deps.sh # 项目依赖安装脚本
├── requirements.txt # Python依赖列表
├── Third_Party_Open_Source_Software_List.yaml # 第三方开源软件列表
├── Third_Party_Open_Source_Software_Notice # 第三方开源软件声明
├── version.cmake # 版本信息(CMake格式)
├── version.info # 版本信息文件
├── .clang-format # 代码风格配置
├── .gitignore # Git忽略规则
└── classify_rule.yaml # 分类规则配置
目录说明
核心目录
| 目录/文件 |
说明 |
src/ |
算子源码目录,包含所有算子的实现代码 |
src/add/ |
add算子目录,实现张量加法运算 |
lib/ |
框架代码目录,提供核心基础功能 |
lib/core/ |
核心功能模块,包含句柄、描述符、计划等 |
lib/elementwise/ |
逐元素运算模块,提供基础元素级操作 |
lib/utils/ |
工具模块,包含类型工具、验证等 |
include/ |
API头文件目录 |
cmake/ |
CMake编译配置文件 |
文档目录
| 目录/文件 |
说明 |
docs/ |
项目文档目录 |
docs/zh/ |
中文文档目录 |
docs/zh/context/ |
公共文档,如环境部署、目录介绍等 |
docs/zh/invocation/ |
算子调用相关文档 |
docs/zh/develop/ |
算子开发相关文档 |
docs/zh/debug/ |
调试调优相关文档 |
docs/implementation.md |
实现说明文档 |
测试目录
| 目录/文件 |
说明 |
tests/ |
项目级测试目录 |
tests/test_common.cpp/h |
测试公共代码 |
src/*/tests/ |
各算子测试用例目录 |
构建相关
| 目录/文件 |
说明 |
build.sh |
项目编译脚本,支持多种编译选项 |
install_deps.sh |
项目依赖安装脚本 |
CMakeLists.txt |
CMake配置文件 |
version.info |
版本信息文件 |
version.cmake |
版本信息(CMake格式) |
脚本目录
| 目录/文件 |
说明 |
scripts/ |
脚本目录 |
scripts/check_build_dependencies.py |
构建依赖检查脚本 |
scripts/generate_version_info.py |
版本信息生成脚本 |
scripts/package/ |
打包相关脚本 |
scripts/package/package.py |
打包Python脚本 |
配置文件
| 文件 |
说明 |
.clang-format |
代码风格配置 |
.gitignore |
Git忽略规则 |
classify_rule.yaml |
分类规则配置 |
requirements.txt |
Python依赖列表 |
OAT.xml |
OAT测试配置 |
算子目录结构
每个算子目录(如src/add/)的典型结构如下:
${op_name}/ # 算子名的小写下划线形式
├── CMakeLists.txt # 算子编译配置文件
├── ${op_name}_kernel.cpp # Kernel实现文件
├── ${op_name}_solution.cpp # Solution实现文件
├── arch35/ # Ascend950特有实现
│ └── ${op_name}_struct.h # 算子结构定义
└── tests/ # 测试用例目录
├── ${op_name}_test.cpp # 算子测试用例
└── ${op_name}_test.h # 测试头文件
说明:不同算子的交付件可能有差异,请以实际目录为准。
框架目录结构
lib/ 目录包含框架层的基础功能模块,为所有算子提供统一的抽象接口和基础设施:
lib/
├── CMakeLists.txt # 库编译配置
├── core/ # 核心功能模块
│ ├── handle.cpp/hpp # 句柄管理
│ ├── operation_descriptor.cpp/hpp # 操作描述符
│ ├── plan.cpp/hpp # 计划管理
│ ├── plan_preference.cpp/hpp # 计划偏好设置
│ └── tensor_descriptor.cpp/hpp # 张量描述符
├── elementwise/ # 逐元素运算模块
│ ├── elementwise.cpp/hpp # 逐元素运算基础
│ └── elementwise_binary.cpp # 二元逐元素运算
└── utils/ # 工具模块
├── type_utils.hpp # 类型工具
├── utils.cpp # 通用工具函数
└── validation.cpp/hpp # 参数验证
核心功能模块说明
| 模块 |
文件 |
说明 |
| 句柄管理 |
handle.cpp/hpp |
管理库的上下文句柄,维护全局状态 |
| 操作描述符 |
operation_descriptor.cpp/hpp |
描述算子操作的参数和属性 |
| 计划管理 |
plan.cpp/hpp |
管理算子执行计划,支持计划缓存 |
| 计划偏好 |
plan_preference.cpp/hpp |
设置计划生成的偏好选项 |
| 张量描述符 |
tensor_descriptor.cpp/hpp |
描述张量的形状、数据类型等属性 |
| 逐元素运算 |
elementwise/ |
提供通用的逐元素运算实现 |
| 工具函数 |
utils/ |
提供类型转换、参数验证等工具函数 |