跳到主要内容

环境准备

环境准备

更新CANN软件

  1. 切换至root用户,并进入默认下载目录/home/HwHiAiUser/Downloads。

    su root
    cd /home/HwHiAiUser/Downloads
  2. 单击链接,获取8.0.RC1.alpha001版本的CANN开发套件包Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run,并上传至当前目录。

  3. 增加对软件包的可执行权限。

    chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run
  4. 卸载环境上原有的Ascend-cann-toolkit开发套件包。

    ./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run --uninstall
  5. 删除软件包所在目录下的文件。

    rm -rf /usr/local/Ascend/ascend-toolkit/*
  6. 静默安装最新版本的Ascend-cann-toolkit开发套件包,即自动签署华为企业业务最终用户许可协议(EULA)

    ./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-aarch64.run --full --quiet
  7. 安装protobuf依赖。

    pip install protobuf==3.20.0
  8. 执行如下命令配置环境变量。

    echo "source /usr/local/Ascend/ascend-toolkit/set_env.sh" >> /root/.bashrc
  9. 执行如下命令使环境变量生效。

    source /root/.bashrc

获取算子samples代码

在开发者套件连接个人PC并且网络连接正常的情况下,执行如下命令返回至用户根目录,在根目录下载算子samples代码。

cd ~
git clone https://gitee.com/ascend/samples.git

AddCustom算子样例执行

AddCustom算子样例支持多种方式调用执行,以下内容以ACLNN接口和核函数两种常用的方式为例进行介绍,更多方式请参考样例仓中的readme指导。

ACLNN接口调用执行

  1. 进入AddCustom算子样例目录。

    cd ~/samples/operator/AddCustomSample/

    目录示例如下:

  2. 执行编译打包命令生成自定义算子包。

    cd FrameworkLaunch/AddCustom
    ./build.sh

    编译成功结果示例:

  3. 部署自定义算子包。

    ./build_out/custom_opp_ubuntu_aarch64.run

    部署成功结果示例:

  4. 通过应用程序样例调用算子的ACLNN接口进行测试。

    cd ~/samples/operator/AddCustomSample/FrameworkLaunch/AclNNInvocation
    bash run.sh

    测试结果示例:

核函数调用执行

  1. 进入AddCustom算子样例核函数调用执行目录。

    cd ~/samples/operator/AddCustomSample/KernelLaunch/AddKernelInvocation
  2. 运行kernellanch调用执行样例脚本。

    bash run.sh -v Ascend310B1 -r npu

新建算子工程开发算子

  1. 创建工程与IR json文件。

    1. 执行如下命令返回根目录。

      cd ~
    2. 创建AddCustom.json文件。

      vim AddCustom.json
    3. 键盘按下“i”键进入INSERT模式,复制以下内容至文件,以AddCustom为例:

      [
      {
      "op": "AddCustom",
      "language": "cpp",
      "input_desc": [
      {
      "name": "x",
      "param_type": "required",
      "format": [
      "ND"
      ],
      "type": [
      "float16"
      ]
      },
      {
      "name": "y",
      "param_type": "required",
      "format": [
      "ND"
      ],
      "type": [
      "float16"
      ]
      }
      ],
      "output_desc": [
      {
      "name": "z",
      "param_type": "required",
      "format": [
      "ND"
      ],
      "type": [
      "float16"
      ]
      }
      ]
      }
      ]
    4. 编辑完成后,按“ESC”键退出INSERT模式,执行**:wq**保存AddCustom.json文件。

  2. 使用msopgen工具创建Ascend C算子工程。

    /usr/local/Ascend/ascend-toolkit/latest/python/site-packages/bin/msopgen gen -i AddCustom.json -f tf -c ai_core-ascend310b -lan cpp -out ~/AddCustom

  3. 开发算子的host侧代码及kernel侧代码。

    可参考Samples仓AddCustom算子样例,host侧:

    cp ~/samples/operator/AddCustomSample/FrameworkLaunch/AddCustom/op_host/* ~/AddCustom/op_host/

    kernel侧:

    cp ~/samples/operator/AddCustomSample/FrameworkLaunch/AddCustom/op_kernel/* ~/AddCustom/op_kernel/
  4. 修改算子工程中配置文件CMakePresets.json,将CMakePresets.json中ASCEND_CANN_PACKAGE_PATH的value值修改为实际CANN包安装目录/usr/local/Ascend/ascend-toolkit/latest。

    1. 执行如下命令打开配置文件。

      cd ~/AddCustom
      vim CMakePresets.json
    2. 使用键盘的方向键令光标移动到ASCEND_CANN_PACKAGE_PATH的值位置,按下键盘上“i”键进入到INSERT模式,修改为CANN包安装目录

      修改完成后按“ESC”键退出INSERT模式,执行**:wq**保存文件。

  5. 编译生成算子安装包。

    在AddCustom目录下执行如下命令编译自定义AddCustom算子,生成算子安装包。

    ./build.sh

Atlas 200I DK A2开发者套件

Ascend C算子开发

在线提单