Merged
增加算子工程目录说明 #73
sky_leilinAdd on Oct 15, 2025
增加算子工程目录说明 #73
Merged
sky_leilinAdd on Oct 15, 2025
Total: 2 files changed+127-2
@@ -11,7 +11,7 @@ ops-math是[CANN](https://hiascend.com/software/cann) (Compute Architecture fo
11<img src="docs/figures/architecture.png" alt="架构图" width="750px" height="400px">11<img src="docs/figures/architecture.png" alt="架构图" width="750px" height="400px">
12 12 
13## 🔍目录结构13## 🔍目录结构
14- 14+关键目录如下,详细目录介绍参见[目录介绍](./docs/context/dir_structure.md#目录介绍)。
15```15```
16├── cmake # 项目工程编译目录16├── cmake # 项目工程编译目录
17├── common # 项目公共头文件和公共源码17├── common # 项目公共头文件和公共源码
@@ -25,7 +25,7 @@ ops-math是[CANN](https://hiascend.com/software/cann) (Compute Architecture fo
25│ │ ├── examples # 算子使用示例25│ │ ├── examples # 算子使用示例
26│ │ ├── op_graph # 算子构图相关目录26│ │ ├── op_graph # 算子构图相关目录
27│ │ ├── op_host # 算子信息库、Tiling、InferShape相关实现目录27│ │ ├── op_host # 算子信息库、Tiling、InferShape相关实现目录
28-│ │ │ └── op_api # 算子aclnn接口实现目录28+│ │ │ └── op_api # 可选,算子aclnn接口实现目录,如未提供则表示此算子的aclnn接口会让工程自动生成
29│ │ ├── op_kernel # 算子kernel目录29│ │ ├── op_kernel # 算子kernel目录
30│ │ └── README.md # 算子介绍文档30│ │ └── README.md # 算子介绍文档
31│ ├── ...31│ ├── ...
@@ -0,0 +1,125 @@
1+# 项目目录
2+ 
3+## 目录介绍
4+ 
5+详细目录介绍说明如下:
6+```
7+├── build.sh # 项目工程编译脚本
8+├── install_deps.sh # 安装依赖包脚本
9+├── cmake # 项目工程编译目录
10+├── CMakeLists.txt # ops-math工程cmakelist入口
11+├── classify_rule.yaml # 组件划分信息
12+├── common # 项目公共头文件和公共代码
13+│ ├── CMakeLists.txt
14+│ ├── inc # 公共头文件目录
15+│ └── src # 公共代码目录
16+├── CONTRIBUTING.md # 贡献指南文档
17+├── conversion # conversion类算子
18+├── docs # 项目文档介绍目录
19+├── examples # 端到端算子开发和调用示例
20+│ ├── add_example # AI Core算子示例目录
21+│ │ ├── CMakeLists.txt # 算子编译配置文件
22+│ │ ├── examples # 算子使用示例目录
23+│ │ ├── op_graph # 算子构图相关目录
24+│ │ ├── op_host # 算子信息库、Tiling、InferShape相关实现目录
25+│ │ ├── op_kernel # 算子kernel目录
26+│ │ └── tests # 算子测试用例目录
27+│ ├── add_example_aicpu # AI CPU算子示例目录
28+│ │ ├── CMakeLists.txt # 算子编译配置文件
29+│ │ ├── examples # 算子使用示例目录
30+│ │ ├── op_graph # 算子构图相关目录
31+│ │ ├── op_host # 算子信息库、InferShape相关实现
32+│ │ ├── op_kernel_aicpu # 算子kernel目录
33+│ │ └── tests # 算子测试用例目录
34+│ ├── CMakeLists.txt
35+│ ├── fast_kernel_launch_example # 轻量级,高性能的算子开发工程模板
36+│ │ ├── ascend_ops # 示例算子实现目录
37+│ │ ├── CMakeLists.txt # 算子编译配置文件
38+│ │ ├── README.md # 轻量级,高性能的算子开发工程说明资料
39+│ │ ├── requirements.txt
40+│ │ └── setup.py # 构建脚本
41+│ └── README.md # 示例工程详细说明文档
42+├── math # math类算子
43+│ ├${op_name} # 算子工程目录,${op_name}表示实际的算子名(小写下划线形式)
44+│ │ ├── CMakeLists.txt # 算子cmakelist入口
45+│ │ ├── README.md # 算子说明资料
46+│ │ ├── docs # 算子aclnn资料目录
47+│ │ │ └── aclnn${OpName}.md # 算子aclnn接口说明资料,${OpName}表示实际的算子(大驼峰形式)
48+│ │ ├── examples # 算子接口调用示例目录
49+│ │ │ ├── test_aclnn_${op_name}.cpp # 算子aclnn调用示例
50+│ │ │ └── test_geir_${op_name}.cpp # 算子geir调用示例
51+│ │ ├── op_graph # 图融合相关实现
52+│ │ │ ├── CMakeLists.txt # op_graph侧cmakelist文件
53+│ │ │ ├── ${op_name}_graph_infer.cpp # InferDataType文件,实现算子数据类型推导
54+│ │ │ ├── ${op_name}_proto.h # 算子原型定义,用于图优化和融合阶段识别算子
55+│ │ │ └── fusion_pass # 算子融合规则目录
56+│ │ ├── op_host # Host侧实现
57+│ │ │ ├── CMakeLists.txt # Host侧cmakelist文件
58+│ │ │ ├── config # 可选,二进制配置文件,如果没有配置则工程会自动生成
59+│ │ │ │ ├── ${soc_version} # 算子在对应NPU上配置的二进制信息,${soc_version}表示NPU型号
60+│ │ │ │ │ ├── ${op_name}_binary.json # 算子二进制配置文件
61+│ │ │ │ │ └── ${op_name}_simplified_key.ini # 算子simplified_key配置信息
62+│ │ │ │ └── ...
63+│ │ │ ├── ${op_name}_def.cpp # 算子信息库,定义算子基本信息,如名称、输入输出、数据类型等
64+│ │ │ ├── ${op_name}_infershape.cpp # 可选,InferShape实现,实现算子形状推导输出shape,如没配置则输出shape与输入shape一样
65+│ │ │ ├── ${op_name}_tiling_${sub_case}.cpp # 可选,针对某些子场景下的tiling优化,${sub_case}表示子场景,如:${op_name}_tiling_arch35是针对arch35架构的优化,如没有该类文件则表明该算子没有对应子场景的特定tiling策略
66+│ │ │ ├── ${op_name}_tiling_${sub_case}.h # 可选,${sub_case}场景下Tiling实现用的头文件
67+│ │ │ ├── ${op_name}_tiling.cpp # 可选,如不使用该文件表明对应场景下无tiling优化,Tiling实现,将张量划分为多个小块,区分数据类型进行并行计算
68+│ │ │ ├── ${op_name}_tiling.h # 可选,Tiling实现用的头文件
69+│ │ │ └── op_api # 可选,算子aclnn接口实现目录,如未提供则表示此算子的aclnn接口会让工程自动生成
70+│ │ │ ├── aclnn_${op_name}.cpp # 算子aclnn接口实现文件
71+│ │ │ ├── aclnn_${op_name}.h # 算子aclnn接口实现头文件
72+│ │ │ ├── ${op_name}.cpp # 算子l0接口实现文件
73+│ │ │ ├── ${op_name}.h # 算子l0接口实现头文件
74+│ │ │ └── CMakeLists.txt
75+│ │ │── op_kernel # Device侧Kernel实现
76+│ │ │ ├── ${sub_case} # 可选,${sub_case}对应的子场景使用的目录,无相应的场景不需要配本目录
77+│ │ │ │ ├── ${op_name}_${model}.h # 算子kernel实现文件,${model}表示用户自定义文件名后缀,通常为tiling模板名
78+│ │ │ │ └── ...
79+│ │ │ ├── ${op_name}_tiling_key.h # 可选,Tilingkey文件,定义Tiling策略的Key,标识不同的划分方式,如没配置则表明该算子无相应的tiling策略
80+│ │ │ ├── ${op_name}_tiling_data.h # 可选,Tilingdata文件,存储Tiling策略相关的配置数据,如块大小、并行度,如没配置则表明该算子无相应的tiling策略
81+│ │ │ ├── ${op_name}.cpp # Kernel入口文件,包含主函数和调度逻辑
82+│ │ │ └── ${op_name}.h # Kernel实现文件,定义Kernel头文件,包含函数声明、结构定义、逻辑实现
83+│ │ └── tests # 算子测试用例
84+│ │ ├── CMakeLists.txt
85+│ │ └── ut # 可选,ut测试用例目录,根据实际情况开发相应的用例
86+│ │ ├── CMakeLists.txt # ut用例cmakelist文件
87+│ │ ├── graph_plugin # grap_plugin测试用例目录
88+│ │ │ ├── CMakeLists.txt
89+│ │ │ └── fusion_pass # 融合规则测试用例目录
90+│ │ │ └── CMakeLists.txt
91+│ │ ├── op_host # op_host测试用例目录
92+│ │ │ ├── CMakeLists.txt
93+│ │ │ ├── ${op_name}_regbase_tiling.h
94+│ │ │ ├── op_api # op_api测试用例目录
95+│ │ │ │ ├── CMakeLists.txt
96+│ │ │ │ └── test_aclnn_${op_name}.cpp # 算子op_api测试用例文件
97+│ │ │ ├── test_${op_name}_${sub_case}.cpp # ${sub_case}场景下的op_host测试用例
98+│ │ │ ├── test_${op_name}.cpp # op_host测试用例
99+│ │ │ ├── test_${op_name}_infershape.cpp # 算子infershape测试用例文件
100+│ │ │ └── test_${op_name}_tiling.cpp # 算子tiling测试用例文件
101+│ │ └── op_kernel # op_kernel测试用例目录
102+│ │ ├── CMakeLists.txt
103+│ │ │── test_${op_name}.cpp # 算子kernel测试用例
104+│ │ └── ${op_name}_data # 可选,op_kernel测试用例中使用的数据生成及对比脚本,如没配置则需要在对应的用例中实现相应的功能
105+│ │ ├── compare_data.py # 数据比较脚本
106+│ │ └── gen_data.py # 数据生成脚本
107+│ └── ...
108+├── OAT.xml # 配置脚本,代码仓工具使用,用于检查license是否规范
109+├── random # random类算子
110+├── README.md # 项目工程资料文档
111+├── LICENSE # 开源声明信息
112+├── requirements.txt # 项目需要的第三方依赖包
113+├── scripts # 脚本目录,包含自定义算子、kernel构建相关配置文件
114+├── SECURITY.md # 项目安全声明文档
115+├── tests # 测试工程目录
116+│ ├── requirements.txt # 测试用例依赖的第三方组件
117+│ └── ut # UT用例工程
118+│ ├── CMakeLists.txt # ut工程的cmakelist脚本
119+│ ├── common # ut工程中使用的公共代码
120+│ ├── op_api # op_api测试工程
121+│ ├── op_host # op_host测试工程
122+│ └── op_kernel # op_kernel测试工程
123+└── version.info # 版本信息
124+```
125+