开发者
资源
[object Object]

本节通过单算子模型执行的样例来介绍图模式下图编译和图执行流程。单算子模型执行是指基于图IR执行算子,先编译算子(例如,使用ATC工具将Ascend IR定义的单算子描述文件编译成算子om模型文件),再调用acl接口加载算子模型,最后调用acl接口执行算子。

[object Object]
  • 已参考,完成CANN驱动和软件的安装,配置CANN软件所需基本环境变量。

    安装CANN软件后,使用CANN运行用户进行编译、运行时,需要以CANN运行用户登录环境,执行source {INSTALL_DIR}/set_env.sh命令设置环境变量。_\{INSTALL\_DIR\}_/set\_env.sh命令设置环境变量。{INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。

  • 已参考完成算子的开发和部署。

[object Object]

代码工程目录结构如下,您可以单击,获取样例工程的完整样例:

[object Object]
[object Object]
  1. 构造静态shape单算子描述文件add_custom_static_shape.json,描述算子的输入、输出及属性等信息。

    AddCustom静态shape算子的描述文件示例如下:

    [object Object]
  2. 使用ATC工具,将该算子描述文件编译成单算子模型文件(*.om文件)

    ATC工具的命令示例如下:

    [object Object]

    关键参数解释如下:

    • --singleop:单算子描述文件(json格式)的路径。
    • --output:存放om模型文件的目录。
    • --soc_version:配置为AI处理器的型号,请根据实际环境进行替换。

    以上命令执行后,会在output参数指定路径下生成*.om后缀的离线模型文件。

[object Object]

您可以参考如下样例编写单算子加载、执行的代码逻辑。

以下是关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考,调用接口后,需增加异常处理的分支,并记录报错日志、提示日志,此处不一一列举。

[object Object]
[object Object]
  1. 开发环境上,设置环境变量,配置单算子验证程序编译依赖的头文件与库文件路径,如下为设置环境变量的示例。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。{arch-os}为运行环境的架构和操作系统,arch表示操作系统架构,os表示操作系统,例如x86_64-linux。

    [object Object]
  2. 编译样例工程,生成单算子验证可执行文件。

    1. 切换到样例工程根目录,然后在样例工程根目录下执行如下命令创建目录用于存放编译文件,例如,创建的目录为“build“。

      mkdir -p build

    2. 进入build目录,执行cmake编译命令,生成编译文件

      命令示例如下所示:

      cd build

      cmake ../src -DCMAKE_SKIP_RPATH=TRUE

    3. 执行如下命令,生成可执行文件。

      make

      会在工程目录的output目录下生成可执行文件execute_add_op

  3. 执行单算子

    1. 以运行用户(例如HwHiAiUser)拷贝开发环境中样例工程output下的execute_add_op到运行环境任一目录。

      说明: 若您的开发环境即为运行环境,此拷贝操作可跳过。

    2. 在运行环境中,执行execute_add_op文件,验证单算子模型文件。

      chmod +x execute_add_op

      ./execute_add_op

      如果有test pass,表明执行成功。