aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Johnson <jeremy.johnson@arm.com>2023-11-29 15:57:58 +0000
committerJeremy Johnson <jeremy.johnson@arm.com>2023-12-04 10:01:48 +0000
commitfe79accba2c220036c7b5ea0aa27bff5ef74ec73 (patch)
treeaa7374aa4132ebbf7925d4ecde1174b612b49b83
parent708da823504b9a7f4e2ffc10e00f06bb092ce637 (diff)
downloadreference_model-fe79accba2c220036c7b5ea0aa27bff5ef74ec73.tar.gz
Main Compliance testing support for RESHAPE
Signed-off-by: Jeremy Johnson <jeremy.johnson@arm.com> Change-Id: I750ef5d3c95daca10e7717437ed375a81b434582
-rw-r--r--reference_model/src/generate/generate_utils.cc1
-rw-r--r--verif/conformance/tosa_main_profile_ops_info.json5
-rw-r--r--verif/generator/tosa_arg_gen.py20
-rw-r--r--verif/generator/tosa_test_gen.py33
4 files changed, 43 insertions, 16 deletions
diff --git a/reference_model/src/generate/generate_utils.cc b/reference_model/src/generate/generate_utils.cc
index d1758fc..bdc840d 100644
--- a/reference_model/src/generate/generate_utils.cc
+++ b/reference_model/src/generate/generate_utils.cc
@@ -64,6 +64,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(Op,
{ Op::Op_PAD, "PAD" },
{ Op::Op_POW, "POW" },
{ Op::Op_RECIPROCAL, "RECIPROCAL" },
+ { Op::Op_RESHAPE, "RESHAPE" },
{ Op::Op_RSQRT, "RSQRT" },
{ Op::Op_REDUCE_MAX, "REDUCE_MAX" },
{ Op::Op_REDUCE_MIN, "REDUCE_MIN" },
diff --git a/verif/conformance/tosa_main_profile_ops_info.json b/verif/conformance/tosa_main_profile_ops_info.json
index 960ad27..351c68d 100644
--- a/verif/conformance/tosa_main_profile_ops_info.json
+++ b/verif/conformance/tosa_main_profile_ops_info.json
@@ -1839,6 +1839,7 @@
"profile": [
"tosa-mi"
],
+ "support_for": [ "lazy_data_gen" ],
"generation": {
"standard": {
"generator_args": [
@@ -1850,7 +1851,7 @@
"--target-dtype",
"bf16",
"--fp-values-range",
- "-2.0,2.0",
+ "-max,max",
"--num-rand-permutations",
"2"
],
@@ -1858,7 +1859,7 @@
"--target-dtype",
"fp32",
"--fp-values-range",
- "-2.0,2.0",
+ "-max,max",
"--target-shape",
"1,1,65536,1",
"--target-shape",
diff --git a/verif/generator/tosa_arg_gen.py b/verif/generator/tosa_arg_gen.py
index c557207..8e88390 100644
--- a/verif/generator/tosa_arg_gen.py
+++ b/verif/generator/tosa_arg_gen.py
@@ -2584,8 +2584,8 @@ class TosaArgGen:
# Check for duplicates
found = False
- for name, other_shape in arg_list:
- if other_shape[0] == newShape:
+ for name, args_dict in arg_list:
+ if args_dict["new_shape"] == newShape:
found = True
break
@@ -2620,16 +2620,28 @@ class TosaArgGen:
new_shape_inferred[extra_dim] = -1
else:
arg_list.append(
- ("perm{}_rank{}_outdefined".format(p, newRank), [newShape])
+ (
+ "perm{}_rank{}_outdefined".format(p, newRank),
+ {"new_shape": newShape},
+ )
)
if error_name != ErrorIf.TensorSizeInputOutputMismatch:
arg_list.append(
(
"perm{}_rank{}_outinferred".format(p, newRank),
- [new_shape_inferred],
+ {"new_shape": new_shape_inferred},
)
)
+ # Now add data generator types
+ arg_list = TosaArgGen._add_data_generators(
+ testGen,
+ opName,
+ dtype,
+ arg_list,
+ error_name,
+ )
+
return arg_list
@staticmethod
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py
index 1602109..0a8d035 100644
--- a/verif/generator/tosa_test_gen.py
+++ b/verif/generator/tosa_test_gen.py
@@ -1526,14 +1526,19 @@ class TosaTestGen:
self.ser.addOperator(op["op"], input_list, output_list, attr)
return TosaTestGen.BuildInfo(result_tensor, None)
- def build_reshape(self, op, a, newShape, validator_fcns=None, error_name=None):
- result_tens = OutputShaper.reshapeOp(
- self.ser, self.rng, a, newShape, error_name
+ def build_reshape(
+ self, op, inputs, args_dict, validator_fcns=None, error_name=None, qinfo=None
+ ):
+ assert len(inputs) == 1
+ a = inputs[0]
+ new_shape = args_dict["new_shape"]
+ result_tensor = OutputShaper.reshapeOp(
+ self.ser, self.rng, a, new_shape, error_name
)
# Invalidate Input/Output list for error if checks.
input_list = [a.name]
- output_list = [result_tens.name]
+ output_list = [result_tensor.name]
pCount, cCount = op["operands"]
num_operands = pCount + cCount
input_list, output_list = TosaErrorIfArgGen.eiInvalidateInputOutputList(
@@ -1546,10 +1551,10 @@ class TosaTestGen:
error_name,
op=op,
input_shape=a.shape,
- output_shape=result_tens.shape,
+ output_shape=result_tensor.shape,
input_dtype=a.dtype,
- output_dtype=result_tens.dtype,
- result_tensors=[result_tens],
+ output_dtype=result_tensor.dtype,
+ result_tensors=[result_tensor],
input_list=input_list,
output_list=output_list,
num_operands=num_operands,
@@ -1557,10 +1562,15 @@ class TosaTestGen:
return None
attr = ts.TosaSerializerAttribute()
- attr.ReshapeAttribute(newShape)
+ attr.ReshapeAttribute(new_shape)
self.ser.addOperator(op["op"], input_list, output_list, attr)
- return result_tens
+
+ compliance = self.tensorComplianceMetaData(
+ op, a.dtype, args_dict, result_tensor, error_name
+ )
+
+ return TosaTestGen.BuildInfo(result_tensor, compliance)
def build_reverse(
self, op, inputs, args_dict, validator_fcns=None, error_name=None, qinfo=None
@@ -4163,7 +4173,7 @@ class TosaTestGen:
"build_fcn": (
build_reshape,
TosaTensorGen.tgBasic,
- TosaTensorValuesGen.tvgDefault,
+ TosaTensorValuesGen.tvgLazyGenDefault,
TosaArgGen.agReshape,
),
"types": TYPE_FIB,
@@ -4176,6 +4186,9 @@ class TosaTestGen:
TosaErrorValidator.evReshapeOutputSizeMultiInference,
TosaErrorValidator.evReshapeOutputSizeNonInteger,
),
+ "data_gen": {
+ "fp": (gtu.DataGenType.PSEUDO_RANDOM,),
+ },
},
"reverse": {
"op": Op.REVERSE,