昇腾社区首页
中文
注册

ElementwiseOpUT

概述

ElementwiseOpUT继承了OpUT,包含了OpUT的能力。

ElementwiseOpUT主要供单输入单输出的Elementwise类型的算子进行测试用例的定义,例如Abs, Square等算子。

ElementwiseOpUT为这类算子提供了更加便利的接口,例如,创建算子编译用例时,对于一些简单场景无需输入format等信息。

ElementwiseOpUT测试类定义

  • 函数原型

    ElementwiseOpUT(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,例如MaximumGrad算子自动生成module名称"impl.maximum_grad"。
    • 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_elewise_case接口

  • 函数原型

    ElementwiseOpUT.add_elewise_case(self, soc, param_info, expect=op_status.SUCCESS, case_name=None)

  • 功能说明

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

  • 参数说明
    • 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。
    • param_info:算子的输入信息,有两种形式:
      • [dtype, shape, format, ori_shape, ori_format]
      • [dtype, shape, format]:此种形式下,ori_shape与ori_format的取值与shape、format的取值相同。
    • expect: 期望是否编译成功,默认为“op_status.SUCCESS”,当测试异常场景时,期望的结果可配置为RuntimeError。
    • case_name:默认为None,测试框架会自动生成测试用例的名称。

    示例:

    ut_case.add_elewise_case("Ascend910", ["float16", (32, 32), "ND"])

    以上用例与调用如下add_case接口的用例实现功能相同:

    ut_case.add_case(support_soc="Ascend910", 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"
        }]
    })

add_elewise_case_simple接口

  • 函数原型

    ElementwiseOpUT.add_elewise_case_simple(self, soc, dtypes, shape, expect=op_status.SUCCESS, case_name=None)

  • 功能说明

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

  • 参数说明
    • 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:需要测试的数据类型,填写多个数据,相当于一次添加了多个测试用例。
    • shape:算子输入的shape。
    • expect: 期望是否编译成功,默认为“op_status.SUCCESS”,当测试异常场景时,期望的结果可配置为RuntimeError。
    • case_name:默认为None,测试框架会自动生成测试用例的名称。

    此接口较add_elewise_case接口,相当于将输入的所有format配置为“ND”。

    示例:

    ut_case.add_elewise_case_simple("Ascend910", ["float16", "float32"], [32, 32])

    以上用例与调用如下add_case接口的用例实现功能相同:

    ut_case.add_case(support_soc="Ascend910", 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"
        }]
    })
    
    ut_case.add_case(support_soc="Ascend910", 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"
        }]
    })