BroadcastOpUT继承了OpUT,包含了OpUT的能力。
BroadcastOpUT主要供双输入单输出的Broadcast类型的算子进行测试用例的定义,例如Add、Mul等算子。BroadcastOpUT为这类算子提供了更加便利的接口,例如,创建算子编译用例时,对于一些简单场景无需输入format等信息。
BroadcastOpUT(op_type, op_module_name=None, op_func_name=None)
@check_op_params(REQUIRED_INPUT, REQUIRED_INPUT, REQUIRED_OUTPUT, KERNEL_NAME) def add(input_x, input_y, output_z, kernel_name="add"):
BroadcastOpUT.add_broadcast_case(self, soc, input_1_info, input_2_info, output_info=None,expect=op_status.SUCCESS, 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)
BroadcastOpUT.add_broadcast_case_simple(self, soc, dtypes, shape1, shape2, expect=op_status.SUCCESS, case_name=None)
添加算子编译的测试用例,测试算子是否支持相关规格,编译出“.o”文件。此接口较add_broadcast_case更加简化。
此接口较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" }] })