开发者
资源
[object Object]

CANN开发套件包中提供了自定义算子工程生成工具msOpGen,可基于算子原型定义输出算子工程:包括算子host侧代码实现文件算子kernel侧实现文件以及工程编译配置文件等

[object Object]

使用msOpGen工具创建算子开发工程的步骤如下:

  1. 编写算子的原型定义json文件,用于生成算子开发工程。

    例如,AddCustom算子的json文件命名为add_custom.json,文件内容如下:

    [object Object]

    例如,ReduceMaxCustom算子(包含属性)的json文件命名为reduce_max_custom.json,文件内容如下:

    [object Object]
    [object Object]
  2. 使用msOpGen工具生成算子的开发工程。以生成AddCustom的算子工程为例,下文仅针对关键参数进行解释,详细参数说明请参见

    [object Object]
    • ${INSTALL_DIR}为CANN软件安装后文件存储路径,请根据实际环境进行替换。

    • -i:指定算子原型定义文件_add_custom_.json所在路径,请根据实际情况修改。

    • -c:ai_core-_<soc_version>代表算子在AI Core上执行,<soc_version>_为AI处理器的型号。

      [object Object]
      [object Object]
    • -lan: 参数cpp代表算子基于Ascend C编程框架,使用C/C++编程语言开发。

    • -out:生成文件所在路径,可配置为绝对路径或者相对路径,并且工具执行用户对路径具有可读写权限。若不配置,则默认生成在执行命令的当前路径。

  3. 命令执行完后,会在-out指定目录或者默认路径下生成算子工程目录,工程中包含算子实现的模板文件,编译脚本等,以AddCustom算子为例,目录结构如下所示:

    [object Object]
    [object Object]

工程目录中的op_kernel和op_host包含了算子的核心实现文件。op_kernel下存放。op_host下存放host侧代码实现,包括。其中kernel侧算子实现和host侧tiling实现在章节已经介绍了其核心的实现方法,在该章节会侧重于介绍接入CANN框架后的编程模式和API的使用。工程目录中的CMakePresets.json,用于开发者完成工程编译相关配置,之后即可进行编译部署。