# 算子工程创建工具参数说明

#### 工具概述

完成算子分析和原型定义后，可使用msOpGen工具生成自定义算子工程，并进行编译部署。

#### 命令汇总

执行如下命令，参数说明请参见表1。

开发者按照输入的配置参数生成算子模板后，建议在运行前确认算子工程代码的安全性。

```
msopgen gen -i {*.json} -f {framework type} -c {Compute Resource} -lan cpp -out {Output Path}
```

**表1** 创建算子工程参数说明

| 参数名称 | 参数描述 | 是否必选 |
| --- | --- | --- |
| gen | 用于生成算子开发交付件。 | 是 |
| -i，--input | 算子原型定义文件（.json）路径，可配置为绝对路径或者相对路径。工具执行开发者需要有此路径的可读权限。 | 是 |
| -f，--framework | 框架类型。 - 默认为TensorFlow框架，默认值：tf或者tensorflow - ONNX框架，参数值：onnx 说明： 所有参数值大小写不敏感。 | 否 |
| -c，--compute_unit | 算子使用的计算资源。 配置格式为：ai_core-{soc version}，ai_core与{soc version}之间用中划线“-”连接。 请根据实际Kirin AI处理器版本进行选择。 说明： AI处理器的型号请通过在运行环境上通过命令行获取： hdc -t {target} shell param get ohos.boot.chiptype。 target：设备的SN码，可以通过hdc list targets获取当前环境上所有设备的SN码。 当前支持的AI处理器型号为Kirin9020/KirinX90。 | 是 |
| -out，--output | 生成文件所在路径，可配置为绝对路径或者相对路径，并且工具执行开发者具有可读写权限。 若不配置，则默认生成在执行命令的当前路径。 说明： 若开发者指定的输出目录中存在与模板工程重名的文件，输出目录中的文件将会被模板工程的文件覆盖。 | 否 |
| -m，--mode | 生成交付件模式。 0：创建新的算子工程，若指定的路径下已存在算子工程，则会报错退出。 1：在已有的算子工程中追加算子。 默认值：0。 | 否 |
| -op，--operator | 配置算子的类型，如：Conv2DTik。 若不配置此参数，当算子原型定义文件中存在多个算子时，工具会提示开发者选择算子。 | 否 |
| -lan，--language | 算子编码语言。 cpp：基于AscendC编程框架，使用C/C++编程语言进行开发。 默认值：cpp。 | 否 |
| -h，--help | 输出帮助信息。 | 否 |

**表2** json文件配置参数说明

| 参数名 | 配置字段 | 类型 | 含义 | 是否必选 |
| --- | --- | --- | --- | --- |
| op | - | string | 算子的Operator Type。 | 是 |
| input_desc | - | list | 输入参数描述。 | 否 |
| input_desc | name | string | 算子输入参数的名称。 | 否 |
| input_desc | param_type | string | 参数类型： - required - optional - dynamic 未配置默认为required。 | 否 |
| input_desc | format | list | 针对类型为tensor的参数，配置为tensor支持的数据排布格式。 包含如下取值： ND、NHWC、NCHW、HWCN、NC1HWC0、FRACTAL_Z等。 说明： format与type需一一对应。若仅填充其中一项的唯一值，msOpGen工具将会以未填充项的唯一输入值为准自动补充至已填充项的长度。例如开发者配置为format:["ND"] /type:["fp16","float","int32"]，msOpGen工具将会以format的唯一输入值（"ND"）为准自动补充至type参数的长度，自动补充后的配置为format:["ND","ND","ND"]/type:["fp16","float","int32"]。 | 否 |
| input_desc | type | list | 算子参数的类型。 取值范围：float、half、float16 (fp16)、float32 (fp32)、int8、int16、int32、int64、uint8、uint16、uint32、uint64、qint8、qint16、qint32、quint8、quint16、bool、double、string、resource、complex64、complex128、bf16、numbertype、realnumbertype、quantizedtype、all、BasicType、IndexNumberType等。 注意： Kirin9020与KirinX90暂不支持float类型作为输入。 说明： format与type需一一对应。 | 否 |
| input_desc | value_depend | string | 该配置字段可选。若配置该字段，表示算子输入为Const类型。取值范围： - required：表示算子的输入必须是Const类型。会校验算子的输入是否是Const类型。若校验通过，则将此输入的值下发到算子，否则报错。 - optional：表示算子的输入可以是Const类型，也可以不是Const类型。如果输入是Const类型，则将输入的值下发到算子，否则不下发。 | 否 |
| output_desc | - | list | 输出参数描述。 | 是 |
| output_desc | name | string | 算子输出参数的名称。 | 是 |
| output_desc | param_type | string | 参数类型： - required - optional - dynamic 未配置默认为required。 | 是 |
| output_desc | format | list | 针对类型为tensor的参数，配置为tensor支持的数据排布格式。 包含如下取值： ND、NHWC、NCHW、HWCN、NC1HWC0、FRACTAL_Z等。 说明： format与type需一一对应。若仅填充其中一项的唯一值，msOpGen工具将会以未填充项的唯一输入值为准自动补充至已填充项的长度。例如开发者配置为format:["ND"] /type:["fp16","float","int32"]，msOpGen工具将会以format的唯一输入值（"ND"）为准自动补充至type参数的长度，自动补充后的配置为format:["ND","ND","ND"]/type:["fp16","float","int32"]。 | 是 |
| output_desc | type | list | 算子参数的类型。 取值范围：float、half、float16 (fp16)、float32 (fp32)、int8、int16、int32、int64、uint8、uint16、uint32、uint64、qint8、qint16、qint32、quint8、quint16、bool、double、string、resource、complex64、complex128、bf16、numbertype、realnumbertype、quantizedtype、all、BasicType、IndexNumberType等。 注意： Kirin9020与KirinX90暂不支持float类型作为输入。 说明： format与type需一一对应。 | 是 |
| attr | - | list | 属性描述。 | 否 |
| attr | name | string | 算子属性参数的名称。 | 否 |
| attr | param_type | string | 参数类型： - required - optional 未配置默认为required。 | 否 |
| attr | type | string | 算子参数的类型。 包含如下取值： int、bool、float、string、list_int、list_float、list_bool，其他请参考OpAttrDef进行修改。 | 否 |
| attr | default_value | - | 默认值。 | 否 |