昇腾社区首页
中文
注册

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)

  • 功能说明

    添加算子编译的测试用例,测试算子是否支持相关规格,编译出“.o”文件。

  • 参数说明
    • 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"
        }]
    })