生成单算子上板测试框架
通过指定Ascend C算子的ST测试用例定义文件(.json)和实现文件kernel_name.cpp,自动生成调用核函数的上板测试框架,进行算子的测试验证,最终查看输出结果确认算子功能是否正确。
- 请用户完成以下输入文件的准备工作。
- 算子ST测试用例定义文件(*.json文件),具体可参考生成测试用例定义文件。
- kernel侧算子实现文件(*.cpp文件),具体可参考实现样例。
- 使用msopst工具生成调用kernel函数的测试代码。
进入msopst工具所在目录生成调用kernel函数的测试代码,执行如下命令:
cd /usr/local/Ascend/ascend-toolkit/latest/python/site-packages/bin ./msopst ascendc_test -i xx/OpType_case.json -kernel xx/add_custom.cpp -out ./output_data
root用户安装toolkit包默认路径为“/usr/local/Ascend”,请根据实际环境进行替换。
表1 参数说明 参数名称
参数描述
是否必选
ascendc_test
生成Ascend C算子调用kernel函数的上板测试代码。
是
-i,--input
算子测试用例定义文件(*.json文件)的路径,可配置为绝对路径或者相对路径。
说明:- 指定的算子ST测试用例定义文件(*.json文件)仅支持配置一个测试用例。
- 测试用例中不支持配置多个type、format及shape。
是
-kernel,--kernel_file
Ascend C算子的kernel侧实现文件(*.cpp文件)路径,可配置为绝对路径或者相对路径。
是
-out,--output
测试框架代码输出路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。
否
- 查看执行结果。命令执行完成后,会屏显打印"Process finished!"提示信息,并会在-out指定的目录下生成时间戳目录,时间戳目录下将生成以算子的OpType命名的存储测试用例及测试结果的文件夹,目录结构如下所示:
{time_stamp} │ ├── OpType │ │ ├── CMakeLists.txt // 编译规则文件 │ │ ├── data │ │ │ └── xx.bin │ │ │ └── xx.bin │ │ ├── data_utils.h │ │ ├── main.cpp // 测试框架 │ │ └── run.sh // 调用测试框架的脚本文件 │ └── st_report.json //运行报表
命令运行成功后,会生成报表st_report.json,记录了测试的信息以及各阶段运行情况,用户运行出问题以后,可基于报表查询运行信息,以便问题定位。同时,st_report.json报表可以对比测试结果。st_report.json保存在图1中“The st_report saved in”路径下。表2 st_report.json报表主要字段及含义 字段
说明
run_cmd
-
-
命令行命令。
report_list
-
-
报告列表,该列表中可包含多个测试用例的报告。
trace_detail
-
运行细节。
st_case_info
测试信息,包含如下内容。
- expect_data_path:期望计算结果路径。
- case_name:测试用例名称。
- input_data_path:输入数据路径。
- planned_output_data_paths:实际计算结果输出路径。
- op_params:算子参数信息。
stage_result
运行各阶段结果信息,包含如下内容。
- status:阶段运行状态,表示运行成功或者失败。
- result:输出结果
- stage_name:阶段名称。
- cmd:运行命令。
case_name
-
测试名称。
status
-
测试结果状态,表示运行成功或者失败。
expect
-
期望的测试结果状态,表示期望运行成功或者失败。
summary
-
-
统计测试用例的结果状态与期望结果状态对比的结果。
test case count
-
测试用例的个数。
success count
-
测试用例的结果状态与期望结果状态一致的个数。
failed count
-
测试用例的结果状态与期望结果状态不一致的个数。
- 修改run.sh文件中CANN软件包的安装位置ASCEND_HOME_DIR。
# 指向昇腾软件包安装地址,导出环境变量 if [ ! $ASCEND_HOME_DIR ]; then export ASCEND_HOME_DIR=/usr/local/Ascend/ascend-toolkit/latest fi source $ASCEND_HOME_DIR/bin/setenv.bash
- 进入执行测试框架的脚本文件所在目录,如下命令进行测试框架代码的上板验证。运行结果如图2所示。
bash run.sh <kernel_name> <soc_version> <core_type> <run_mode>
表3 脚本参数介绍 参数名
参数介绍
<soc_version>
算子运行的AI处理器型号。
<run_mode>
表明算子以cpu模式或npu模式运行。
取值为cpu或npu_onboard。