aboutsummaryrefslogtreecommitdiff
path: root/verif/generator/tosa_test_gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'verif/generator/tosa_test_gen.py')
-rw-r--r--verif/generator/tosa_test_gen.py61
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": {