下载
中文
注册

check_op_params

函数功能

算子定义函数的装饰器,为算子定义函数提供基础的校验功能,对算子的输入、输出、属性及Kernel Name进行基础校验。

函数原型

check_op_params(*type_args, **type_kwargs)

参数说明

参数名

说明

type_args

可变长度的列表,取值范围为•输入输出参数•属性•KERNEL_NAME

type_kwargs

保留参数,暂不使用。

  • 输入输出参数
    表1 输入输出参数校验

    参数取值

    参数含义

    REQUIRED_INPUT

    表明在算子定义函数中该参数是算子的必须输入。

    会做如下常规校验:

    • 必须为dict类型。
    • dict中必须包含如下信息:

      OpParamInfoKey.SHAPE、OpParamInfoKey.FORMAT、OpParamInfoKey.ORI_SHAPE、OpParamInfoKey.ORI_FORMAT、OpParamInfoKey.DTYPE

      OpParamInfoKey的参数说明请参见OpParamInfoKey

    • shape必须是list或者tuple类型,shape中dim必须是int类型,且0<=rank<=8,0<=各Dim<=2**31,0<=Shape的总size<=2**31。
    • dtype必须在("int8", "int16", "int32", "int64", "float16", "float32", "float64")中。
    • format必须在TensorFormat的定义中。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_INPUT

    表明在算子定义函数中,该参数是算子的可选输入。

    可以为None,其他的校验同REQUIRED_INPUT。

    若校验失败,则抛出校验错误的异常RuntimeError。

    DYNAMIC_INPUT

    表明在算子定义函数中,该参数是算子的动态输入。

    需要为list或者tuple类型,且list/tuple中的每个元素都要满足REQUIRED_INPUT的校验。

    若校验失败,则抛出校验错误的异常。

    REQUIRED_OUTPUT

    表明在算子定义函数中,该参数是算子的必须输出。

    校验规则同REQUIRED_INPUT。

    OPTION_OUTPUT

    表明在算子定义函数中,该参数是算子的可选输出。

    校验规则同OPTION_INPUT。

    DYNAMIC_OUTPUT

    表明在算子定义函数中,该参数是算子的可选输出。

    校验规则同DYNAMIC_INPUT。

  • 属性
    表2 属性校验

    参数取值

    参数含义

    REQUIRED_ATTR_INT

    表明在算子定义函数中,该参数是算子的必选属性,属性的类型需要为INT(int64)类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_FLOAT

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为FLOAT(float32)类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_STR

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为String类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_BOOL

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为Bool类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_TYPE

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为STRING类型,值必须在["int8", "int16", "int32", "int64", "float16", "float32", "float64"]中。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_LIST_INT

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为INT类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_LIST_FLOAT

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为float类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_LIST_BOOL

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为bool类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    REQUIRED_ATTR_LIST_LIST_INT

    表明在算子定义函数中,该参数是算子的必须属性,属性的类型需要为INT类型的二维list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_INT

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为INT类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_FLOAT

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为FLOAT(float32)类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_STR

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为string类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_BOOL

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为bool类型。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_TYPE

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为STRING类型,值必须在["int8", "int16", "int32", "int64", "float16", "float32", "float64"]中。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_LIST_INT

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为INT(int64)类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_LIST_FLOAT

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为float类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_LIST_BOOL

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为bool类型的list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

    OPTION_ATTR_LIST_LIST_INT

    表明在算子定义函数中,该参数是算子的可选属性。

    • 可以为None。
    • 若不为None,则需要为INT(int64)类型的二维list或者tuple。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

  • KERNEL_NAME

    表明算子定义函数中,该参数是算子的kernel name,kernel name需要小于等于200个字符,并且只能包含[A-Za-z_][A-Za-z0-9_]这些字符。

    若校验失败,则抛出校验错误的异常(RuntimeError)。

返回值说明

无返回值,校验错误会抛出RuntimeError。

约束说明

无。

调用示例

@check_op_params(REQUIRED_INPUT, REQUIRED_OUTPUT, REQUIRED_ATTR_STR, KERNEL_NAME)
def sample_op(x, y, attr_a, kernel_name):

调用装饰器函数check_op_params对算子定义函数sample_op的入参进行校验,如下所示:

  • 入参x需要满足“必选输入”的要求,详情请参见输入输出参数
  • 入参y需要满足“必选输出”的要求,详情请参见输入输出参数
  • 入参attr_a需要满足“必需string类型的属性”的要求,详情请参见属性
  • 入参kernel_name需要满足“KERNEL_NAME”的要求,详情请参见KERNEL_NAME