Skip to content

命名转换规则对照表

本文属于基础内容,介绍自定义算子工程中的命名转换规则。算子类型(OpType)通常采用大驼峰命名方式,配置中的实现文件名和核函数(Kernel)入口名通常采用小写下划线命名方式。默认情况下,框架会根据OpType生成这些名称。

转换规则概述

转换发生在构建阶段。构建工具会根据已注册的OpType生成配置和相关代码;算子运行时使用已经生成的配置和符号,不会再次转换名称。

构建工具从左向右按以下规则处理字符:

  1. 首字符大写转小写:首字符直接转换为小写,不插入下划线。
  2. 前一个字符不是大写字母时插入下划线:当前字符是大写字母,且前一个字符是小写字母或数字时,在当前字符前插入下划线,并将当前字符转换为小写。
  3. 连续大写与后续单词之间插入下划线:当前字符和前一个字符都是大写字母,但下一个字符是小写字母时,在当前字符前插入下划线,并将当前字符转换为小写。
  4. 其他字符直接转换或保留:其他大写字母直接转换为小写;小写字母和数字保持不变。

构建工具还会检查OpType是否符合推荐的命名规范:首字符为大写字母,后续字符只能是字母或数字。不符合规范时会输出告警,建议使用大驼峰命名。

对照表

下表列出了常见算子名称的转换结果。结果以当前构建工具的实际转换结果为准。

算子类型(大驼峰)文件名/核函数(Kernel)入口名(小写下划线)转换说明
AddCustomadd_custom首字符转小写,Custom前插入下划线
ReduceMaxCustomreduce_max_customMaxCustom前分别插入下划线
MatmulCustommatmul_customCustom前插入下划线
BatchNormCustombatch_norm_customNormCustom前分别插入下划线
Conv2DCustomconv2_d_customD前是数字2,因此在D前插入下划线
SoftmaxCustomsoftmax_customCustom前插入下划线
ReluCustomrelu_customCustom前插入下划线
LayerNormCustomlayer_norm_customNormCustom前分别插入下划线
SliceCustomslice_customCustom前插入下划线
GatherV2Customgather_v2_customV前是小写字母,Custom前是数字2
SplitVCustomsplit_v_customVCustom前分别插入下划线
TransposeCustomtranspose_customCustom前插入下划线
OneHotCustomone_hot_customHotCustom前分别插入下划线
TopKCustomtop_k_customKCustom前分别插入下划线

特殊情况说明

连续大写字母

连续大写字母通常表示缩写。转换工具不会在缩写的每个字母前都插入下划线,而是在缩写和后续单词的边界插入下划线。

  • AbcAAc转换为abc_a_ac:第一个A前是小写字母c,第二个A后是小写字母c,两处都会插入下划线。
  • GRUCell转换为gru_cellC前是大写字母U,后是小写字母e,因此在C前插入下划线。
  • HTTPServerCustom转换为http_server_custom:在ServerCustom的单词边界插入下划线。

数字与字母相邻

数字本身保持不变。数字后的字符如果是大写字母,由于数字不是大写字母,会触发规则2。

Text
GatherV2Custom -> gather_v2_custom
Conv2DCustom   -> conv2_d_custom

因此,不能仅凭常见缩写习惯把Conv2D写成conv2d;当前实现的实际转换结果是conv2_d

首字母大写

首字母直接转换为小写,不插入下划线。

Text
Add    -> add
Reduce -> reduce

工程中的实际影响

默认情况下,开发者需要保证以下对应关系:

项目命名方式AddCustom示例
算子类型、OpDef类名、构造函数名、OP_ADD参数大驼峰AddCustom
核函数(Kernel)源码文件名建议使用小写下划线,可由CMake显式指定add_custom.cpp
核函数(Kernel)入口函数名默认使用小写下划线,需与opInterface.value一致add_custom

使用msOpGen创建算子工程时,工具通常会按上述规则生成初始文件名和核函数(Kernel)入口名。构建后可以通过生成的ops-info.ini和aclnn头文件确认实际转换结果,应用程序也应以这些构建产物为准。

如果修改了aclnn工程名前缀或直调接口前缀,生成文件和接口的前缀也会变化。重命名Host或核函数(Kernel)源文件后,还需要同步修改CMake中的源文件列表。

相关文档

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区