diff options
Diffstat (limited to 'verif/generator/tosa_test_gen.py')
-rw-r--r-- | verif/generator/tosa_test_gen.py | 61 |
1 files changed, 27 insertions, 34 deletions
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py index cbac081..482e8f8 100644 --- a/verif/generator/tosa_test_gen.py +++ b/verif/generator/tosa_test_gen.py @@ -44,6 +44,9 @@ class TosaTestGen: TOSA_MI_DOT_PRODUCT_TEST_SETS = 6 TOSA_MI_DOT_PRODUCT_MIN = 1000 + # Minimum tensor size for the FP special tests + TOSA_MI_FP_SPECIAL_MIN_SIZE = 20 + def __init__(self, args): self.args = args self.basePath = args.output_dir @@ -576,16 +579,13 @@ class TosaTestGen: error_name=None, qinfo=None, ): - assert len(inputs) == 1 + assert len(inputs) == 2 a = inputs[0] - table = args_dict["table"] + table = inputs[1] result_tensor = OutputShaper.tableOp(self.ser, rng, a, error_name) - attr = ts.TosaSerializerAttribute() - attr.TableAttribute(table) - # Invalidate Input/Output list for error if checks. - input_list = [a.name] + input_list = [a.name, table.name] output_list = [result_tensor.name] pCount, cCount = op["operands"] num_operands = pCount + cCount @@ -608,7 +608,7 @@ class TosaTestGen: ): return None - self.ser.addOperator(op["op"], input_list, output_list, attr) + self.ser.addOperator(op["op"], input_list, output_list) compliance = self.tensorComplianceMetaData( op, a.dtype, args_dict, result_tensor, error_name @@ -860,6 +860,7 @@ class TosaTestGen: strides = args_dict["stride"] padding = args_dict["pad"] dilations = args_dict["dilation"] + local_bound = args_dict["local_bound"] assert len(padding) == 4 result_tensor = OutputShaper.conv2dOp( @@ -916,9 +917,6 @@ class TosaTestGen: ): return None - # TODO - Test local_bound, for now set local bound attribute to False - local_bound = False - attr = ts.TosaSerializerAttribute() attr.ConvAttribute( padding, strides, dilations, qinfo[0], qinfo[1], local_bound, accum_dtype @@ -948,6 +946,7 @@ class TosaTestGen: strides = args_dict["stride"] padding = args_dict["pad"] dilations = args_dict["dilation"] + local_bound = args_dict["local_bound"] assert len(padding) == 6 result_tensor = OutputShaper.conv3dOp( @@ -1004,9 +1003,6 @@ class TosaTestGen: ): return None - # TODO - Test local_bound, for now set local bound attribute to False - local_bound = False - attr = ts.TosaSerializerAttribute() attr.ConvAttribute( padding, strides, dilations, qinfo[0], qinfo[1], local_bound, accum_dtype @@ -1035,6 +1031,7 @@ class TosaTestGen: accum_dtype = args_dict["acc_type"] strides = args_dict["stride"] out_pad = args_dict["pad"] + local_bound = args_dict["local_bound"] assert len(out_pad) == 4 result_tensor = OutputShaper.transposeConv2DOp( @@ -1082,9 +1079,6 @@ class TosaTestGen: ): return None - # TODO - Test local_bound, for now set local bound attribute to False - local_bound = False - attr = ts.TosaSerializerAttribute() attr.TransposeConvAttribute( out_pad, strides, qinfo[0], qinfo[1], local_bound, accum_dtype @@ -1114,6 +1108,7 @@ class TosaTestGen: strides = args_dict["stride"] padding = args_dict["pad"] dilations = args_dict["dilation"] + local_bound = args_dict["local_bound"] result_tensor = OutputShaper.depthwiseConv2dOp( self.ser, @@ -1169,9 +1164,6 @@ class TosaTestGen: ): return None - # TODO - Test local_bound, for now set local bound attribute to False - local_bound = False - attr = ts.TosaSerializerAttribute() attr.ConvAttribute( padding, strides, dilations, qinfo[0], qinfo[1], local_bound, accum_dtype @@ -3367,6 +3359,7 @@ class TosaTestGen: } EW_UNARY_DATAGEN = { DType.FP16: (gtu.DataGenType.PSEUDO_RANDOM, gtu.DataGenType.FULL_RANGE), + DType.FP32: (gtu.DataGenType.PSEUDO_RANDOM, gtu.DataGenType.FP_SPECIAL), } PR_FS_DATAGEN = { DType.FP16: (gtu.DataGenType.PSEUDO_RANDOM, gtu.DataGenType.FP_SPECIAL), @@ -3654,7 +3647,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "sigmoid": { "op": Op.SIGMOID, @@ -3672,7 +3665,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "tanh": { "op": Op.TANH, @@ -3690,7 +3683,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, "compliance": { "abs_error_lower_bound": 0.5, }, @@ -3711,7 +3704,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, "compliance": {"ulp": 5}, }, # Elementwise Binary Operators @@ -4049,11 +4042,11 @@ class TosaTestGen: # Use the automatic generation functions to create the input array # but create the table tensor in the build function, as it may be # a different type from the input - "operands": (1, 0), + "operands": (2, 0), "build_fcn": ( build_table, TosaTensorGen.tgBasic, - TosaTensorValuesGen.tvgLazyGenDefault, + TosaTensorValuesGen.tvgTable, TosaArgGen.agTable, ), "types": [DType.INT8, DType.INT16], @@ -4152,7 +4145,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": EW_UNARY_DATAGEN, "compliance": { "abs_error_normal_divisor": 2, "abs_error_bound_addition": 1, @@ -4306,7 +4299,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": EW_UNARY_DATAGEN, "compliance": {"abs_error_normal_divisor": 2}, }, # Elementwise Ternary operators @@ -4547,7 +4540,7 @@ class TosaTestGen: TosaErrorValidator.evWrongOutputType, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "pad": { "op": Op.PAD, @@ -4570,7 +4563,7 @@ class TosaTestGen: TosaErrorValidator.evRankMismatch, TosaErrorValidator.evWrongRank, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "dim": { "op": Op.DIM, @@ -4610,7 +4603,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "reverse": { "op": Op.REVERSE, @@ -4630,7 +4623,7 @@ class TosaTestGen: TosaErrorValidator.evWrongInputList, TosaErrorValidator.evWrongOutputList, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "slice": { "op": Op.SLICE, @@ -4660,7 +4653,7 @@ class TosaTestGen: TosaErrorValidator.evWrongOutputList, TosaErrorValidator.evRankMismatch, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "tile": { "op": Op.TILE, @@ -4681,7 +4674,7 @@ class TosaTestGen: TosaErrorValidator.evRankMismatch, TosaErrorValidator.evWrongRank, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, "transpose": { "op": Op.TRANSPOSE, @@ -4705,7 +4698,7 @@ class TosaTestGen: TosaErrorValidator.evRankMismatch, TosaErrorValidator.evTensorSizeInputOutputMismatch, ), - "data_gen": PSEUDO_RANDOM_DATAGEN, + "data_gen": PR_FS_DATAGEN, }, # Data nodes "const": { |