【2023 · CANN训练营第一季】高阶班 TIK C++算子端到端测试验证与性能采集

【2023 · CANN训练营第一季】高阶班 TIK C++算子端到端测试验证与性能采集

1 测试验证

1.1 环境安装

昇腾社区
https : //www.hiascend.com/ software/cann/community

依赖条件:

  • 最新版本的昇腾社区toolit安装包环境,使用root用户默认会安装到/usrilocalVAscand/ascand-toolkitlatest
  • 最新版本的昇腾社区Community SDK软件包,解压到Ascend安装目录下/ustrlocallAscend/ascend-toolkitlatest/opens
    1.1.png

1.2 UT测试

为TIK C++算子添加UT测试的步骤:

  1. cann_op_contrib/community/ops中新建用例目录并添加代码实现文件
  • 实现文件包含tiling源文件和算子核函数源文件,分别对应op_host目录下的add_tik2_tiling.h和op_kernel下的add_tik2.cpp
    1.2.1.png
  1. cann_op_contrib/community/tests中新建用例目录并添加代码测试文件
  • 测试文件包含算子调用文件和真值脚本生成文件,分别对应着main.cpp和add_tik2.py
    1.2.2.png
    3.在cann_op_contrib目录下执行./build.sh -u tik2

1.3 ST测试

ST测试步骤
1.下载gitee生态仓: git clone https://gitee.com/ascend/cann_op_contrib.git
2.设置安装路径: exportASCEND_CUSTOM_PATH=/usr/local/Ascend/ascend-toolkit/latest
3.设置环境变量(昇腾实际安装的位置): source $ASCEND_CUSTOM_PATH/. ./set_env.sh
4.在cann_op_contrib目录下执行: ./pack.sh,将TIK C++算子打包成自定义算子包
5.在cann_op_contrib目录下执行: (cd output;./CAMl_OP_CONTRIB_linux-x86_64.run --install),安装部署自定义算子包
6.在cann_op_contrib目录下执行: (cd community/tests/add_tik2/st;./run_case.sh),运行ST测试用例

注:如果之前安装过算子包,第二步应该先卸载,执行(cd output; . [CAMN_oP _CONTRLB_1inux-x86_64.run --uninstall),另外WumPy版本不高于1.24

为TIK C++算子添加ST测试的步骤:

  1. cann_op_contrib/community/ops中新建用例目录并添加代码实现文件
  • 实现文件包含: host则(op_host) tiling源文件、主机侧算子源文件和kerne侧(op_kernel)算子核函数实现源文件,分别对应op_host目录下的add_tik2_tiling.h、add_tik2.cpp,和op_kernel下的add_tik2.cpp
    1.3.1.png
  1. cann_op_contrib/community/tests中新建用例目录并添加代码
    测试文件
  • 测试文件包含算子测试用例定义文件、真值脚本生成文件和测试用例调用脚本,分别对应add_tik2.json,test_add_tik2_data.py
    1.3.2.png
    3.在cann_op_contrib目录下执行后续打包算子,安装部署算子包和编译并执行测试用例的操作

2 ST测试验证介绍

2.1 ST实现 - host侧算子

host侧算子实现开发,包括算子原型注册、Shape推导等函数实现与注册、Tiling实现与注册和信息库配置

2.1.1 算子原型注册

算子原型描述了算子的输入输出,属性等信息,算子原型注册用于将算子注册到算子原型库中
2.10算子注册.png

2.1.2 Shape推导等函数实现与注册

根据算子的输入张量描述、算子逻辑及算子属性,推理出算子的输出张量描述,包括张量的Shape、数据类型及数据排布格式等信息。这样算子构图准备阶段就可以为所有的张量静态分配内存,避免动态内存分配带来的开销
2.11 Shape推导函数的实现.png

2.1.3 Tiling实现与注册

计算数据切分过程相关的参数,比如每次计算的数据量大小
2.12 Tiling函数的实现.png

2.1.4 信息库配置(根据运行平台进行配置)

算子开发者需要通过配置算子信息库文件,将算子在昇腾A处理器上相关实现信息注册到算子信息库中
2.13 信息库配置.png

2.2 ST测试 - run_case.sh与test_add_tik2_data.py

CANN开发套件包中提供了ST测试工具: msopst,支持生成算子的ST测试用例并在硬件环境中执行·根据算子信息库定义文件(*.ini)生成算子测试用例定义文件(*json),作为算子ST测试用例的输入
·根据算子测试用例定义文件生成ST测试数据及测试用例执行代码,在硬件环境上执行算子测试用例。自动生成运行报表(st report.json)功能,报表记录了测试用例信息及各阶段运行情况
·根据用户定义并配置的算子期望数据生成函数,回显期望算子输出和实际算子输出的对比测试结果

2.2.1 run_case.sh

2.2.1.png

2.2.2 test_add_tik2_data.py

2.2.2.png

2.2.3 算子测试用例定义文件

2.2.3.png

2.2.4 生成测试用例和报告

2.2.4.png

3 性能采集工具msprof

当使用内核调用符时,会生成相应的二进制可执行文件,可以使用性能采集工具运行NPU模式下生成的可执行文件从而采集TIK C++ 算子在昇腾平台上执行的性能数据
性能采集步骤:

  1. 设置环境变量(昇腾实际安装的位置): source /usr/local/Ascend/ascend-toolkit/ …/ set_env.sh
  2. 测试NPU模式下的TIKC++算子,保证其精度正确,生成对应的二进制可执行文件: bash run.sh add_tik2 ascend910 AiCore npu
  3. 使用msprof工具采集性能,详细的介绍请参考社区文档——性能分析工具
  4. 使用命令(用户可以根据自身的需要灵活组合性能分析指令):msprof --application=“./add_tik2_npu”–output=“./out”–ai-core=on --aic-metrics=“Pipeltilization”
  5. 在当前目录会生成out文件夹,在device_0/summary/op_summary_0_1.csv能够看到一些具体的数据
    . mte2类型指令(DDR->AICORE搬运类指令)的cycle数在所有指令的cycle数中的占用比
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值