BroadcastOpUT
概述
BroadcastOpUT继承了OpUT,包含了OpUT的能力。
BroadcastOpUT主要供双输入单输出的Broadcast类型的算子进行测试用例的定义,例如Add、Mul等算子。BroadcastOpUT为这类算子提供了更加便利的接口,例如,创建算子编译用例时,对于一些简单场景无需输入format等信息。
BroadcastOpUT测试类定义
- 函数原型
BroadcastOpUT(op_type, op_module_name=None, op_func_name=None)
- 参数说明
- op_type:算子的类型。
- op_module_name:算子的module名称(即算子的实现文件名称和路径),例如:impl.add(文件路径为:impl/add.py)。默认值为None,可根据op_type自动生成,op_type到算子实现文件名称的转换规则可参见4,例如BiasAdd算子自动生成module名称"impl.bias_add"。
- op_func_name:算子的接口名称,算子实现文件中的算子接口名。默认值为None,可根据op_type自动生成,op_type到算子实现文件中接口名称的转换规则可参见4,例如Add算子,则需要在impl/add.py中存在add接口,接口定义如下所示:
@check_op_params(REQUIRED_INPUT, REQUIRED_INPUT, REQUIRED_OUTPUT, KERNEL_NAME) def add(input_x, input_y, output_z, kernel_name="add"):
add_broadcast_case接口
- 函数原型
BroadcastOpUT.add_broadcast_case(self, soc, input_1_info, input_2_info, output_info=None,expect=op_status.SUCCESS, case_name=None)
- 功能说明
- 参数说明
- soc:测试该用例是否支持对应的昇腾AI处理器,昇腾AI处理器的取值范围可从“compiler/data/platform_config”目录下查看,对应“*.ini”文件的名字即为可配置的昇腾AI处理器类型。support_soc支持的数据类型为str、tuple或者list,tuple或者list表示可以支持多个SoC。若配置为“all”或者“None”,表示支持所有的SoC。
- input_1_info:算子的第一个输入的信息,有两种形式:
- [dtype, shape, format, ori_shape, ori_format]
- [dtype, shape, format]:此种形式下,ori_shape与ori_format的取值与shape、format的取值相同。
- input_2_info:算子的第二个输入的信息,与input_1_info含义相同。
- output_info:默认为None,不需要填写。
- expect: 期望是否编译成功,默认为“op_status.SUCCESS”,当测试异常场景时,期望的结果可配置为RuntimeError。
- case_name:默认为None,测试框架会自动生成测试用例的名称。
示例:
ut_case.add_broadcast_case("all", ["float16", (32, 32), "ND"], ["float16", (32, 32), "ND"]) ut_case.add_broadcast_case("all", ["float16", (32, 32), "ND", (32, 32), "ND"], ["float16", (32, 32), "ND", (32, 32), "ND"]) # 期望异常的用例 ut_case.add_broadcast_case("all", ["float16", (31, 32), "ND"], ["float16", (32, 32), "ND"], expect=RuntimeError)
add_broadcast_case_simple接口
- 函数原型
BroadcastOpUT.add_broadcast_case_simple(self, soc, dtypes, shape1, shape2, expect=op_status.SUCCESS, case_name=None)
- 功能说明
添加算子编译的测试用例,测试算子是否支持相关规格,编译出“.o”文件。此接口较add_broadcast_case更加简化。
- 参数说明
- soc:测试该用例是否支持对应的昇腾AI处理器,昇腾AI处理器的取值范围可从Ascend-cann-toolkit安装目录/ascend-toolkit/latest/compiler/data/platform_config目录下查看,对应“*.ini”文件的名字即为可配置的昇腾AI处理器类型。support_soc支持的数据类型为str、tuple或者list,tuple或者list表示可以支持多个SoC。若配置为“all”或者“None”,表示支持所有的SoC。
- dtypes:需要测试的数据类型,填写多个数据,相当于一次添加了多个测试用例。
- shape1:算子的第一个输入的shape。
- shape2:算子的第二个输入的shape。
- expect: 期望是否编译成功,默认为“op_status.SUCCESS”,当测试异常场景时,期望的结果可配置为RuntimeError。
- case_name:默认为None,测试框架会自动生成测试用例的名称。
此接口较add_broadcast_case接口,相当于将输入的所有format配置为“ND”。
示例:
ut_case.add_broadcast_case_simple(["Ascendxxx", "Ascendxxx"], ["float16", "float32"], (32, 32), (32, 32))
以上用例与调用如下add_case接口的用例实现功能相同:
ut_case.add_case(support_soc=["Ascendxxx", "Ascendxxx"], case={ "params": [{ "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float16" }, { "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float16" }, { "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float16" }] }) ut_case.add_case(support_soc=["Ascendxxx", "Ascendxxx"], case={ "params": [{ "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float32" }, { "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float32" }, { "shape": (32, 32), "ori_shape": (32, 32), "format": "ND", "ori_format": "ND", "dtype": "float32" }] })
父主题: UT测试接口参考