CANN开发套件包中提供了ST测试工具:msopst,用于生成算子的ST测试用例并在硬件环境中执行。该工具的存放路径在CANN软件安装后文件存储路径中的“python/site-packages/bin”,详细使用可参考msopst工具使用。
使用此工具生成算子测试用例前,需要将要测试的算子部署到当前环境中。
./msopst create -i Op_implementation/add_custom.cpp -out ./output
请将Op_implementation更换为host侧算子的实现文件所在路径。
命令执行成功后,会在当前路径的output目录下生成算子测试用例定义文件:AddCustom_case_timestamp.json。
步骤2生成的json文件为模板文件,不满足直接作为ST测试用例生成输入的要求,所以用户需要参考此步骤,修改算子测试用例定义文件(*.json),构造测试用例,以满足ST测试覆盖的范围。“*.json”文件支持的全量字段说明参见表2。不同场景下的测试用例定义文件的样例可参见测试用例定义文件配置样例。
[ { "case_name": "Test_AddCustom_001", "op": "AddCustom", "input_desc": [ { "format": [ "ND" ], "type": [ "float16" ], "shape": [16], "data_distribute": [ "uniform" ], "value_range": [ [ 0.1, 1.0 ] ], "name": "x" }, { "format": [ "ND" ], "type": [ "float16" ], "shape": [16], "data_distribute": [ "uniform" ], "value_range": [ [ 0.1, 1.0 ] ], "name": "y" } ], "output_desc": [ { "format": [ "ND" ], "type": [ "float16" ], "shape": [16], "name": "z" } ] } ]
在Python文件中实现算子期望数据生成函数,文件目录和文件名称可自定义,如“/home/test/test_add_st.py”。
例如Add算子的期望数据生成函数实现如下:
def calc_expect_func(x1, x2, y): res = x1["value"] + x2["value"] return [res, ]
用户需根据开发的自定义算子完成算子期望数据生成函数。测试用例定义文件中的全部Input、Output、Attr的name作为算子期望数据生成函数的输入参数,若Input是可选输入,请将该输入指定默认值传参。
例如,某算子输入中的x3为可选输入时,定义该算子的期望数据生成函数如下。
def calc_expect_func(x1, x2, x3=None, y=None)
[ { "case_name":"Test_AddCustom_001", "op": "AddCustom", "calc_expect_func_file": "/home/test/test_add_st.py:calc_expect_func", //配置生成算子期望输出数据的实现文件 "input_desc": [...] ... ... } ]
export DDK_PATH=${INSTALL_DIR} export NPU_HOST_LIB=${INSTALL_DIR}/{arch-os}/devlib
./msopst run -i xx/AddCustom_case_timestamp.json -soc <soc_version> -out ./output -c Test_AddCustom_001 -d {device id} -conf {msopst.ini path} -err_thr "[0.01,0.05]"
参数说明如下,更详细的参数说明请参考表1:
如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy。
命令运行成功后会生成报表st_report.json,如图1保存在“The st_report saved in”路径下,记录了测试的信息以及各阶段运行情况。
同时,st_report.json报表可以对比测试结果,如果用户运行出问题,也可基于报表查询运行信息,以便问题定位。