aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Ward <james.ward@arm.com>2022-12-07 15:48:47 +0000
committerEric Kunze <eric.kunze@arm.com>2023-01-19 16:31:59 +0000
commit3407125ce2a470216bd54f8bb3ab5216f617c1be (patch)
tree7e365e7c25618f87cb869fd472ef3c6903f3352a
parent657af86089aa60e12e59943146247c8c706be573 (diff)
downloadreference_model-3407125ce2a470216bd54f8bb3ab5216f617c1be.tar.gz
Create MI tests for Activation: CLAMP; Data Layout: PAD
* Existing float attributes now serialized as bytes Signed-off-by: James Ward <james.ward@arm.com> Change-Id: I415276706b9daf0893e3a59189f387f872ff07c2
-rw-r--r--reference_model/src/ops/data_layout.cc1
m---------thirdparty/serialization_lib0
-rw-r--r--verif/conformance/tosa_main_profile_ops_info.json57
-rw-r--r--verif/generator/tosa_test_gen.py15
4 files changed, 69 insertions, 4 deletions
diff --git a/reference_model/src/ops/data_layout.cc b/reference_model/src/ops/data_layout.cc
index f5dbf31..909c567 100644
--- a/reference_model/src/ops/data_layout.cc
+++ b/reference_model/src/ops/data_layout.cc
@@ -191,6 +191,7 @@ int OpPad<Rank, Dtype>::eval()
pad_value = (InEigenType)attribute->pad_const_int();
break;
case DType_FP16:
+ case DType_BF16:
case DType_FP32:
pad_value = (InEigenType)attribute->pad_const_fp();
break;
diff --git a/thirdparty/serialization_lib b/thirdparty/serialization_lib
-Subproject ca7ce0e94b3ee7339f31b47baa3a3fb4522243a
+Subproject e36f4f70b51c03712db96ea284e6e54b3e60a74
diff --git a/verif/conformance/tosa_main_profile_ops_info.json b/verif/conformance/tosa_main_profile_ops_info.json
index a175d3e..9d223ba 100644
--- a/verif/conformance/tosa_main_profile_ops_info.json
+++ b/verif/conformance/tosa_main_profile_ops_info.json
@@ -273,6 +273,63 @@
"tosa-mi"
]
},
+ "clamp": {
+ "group": "activation",
+ "generator_args": [
+ [
+ "--target-dtype",
+ "fp32",
+ "--target-dtype",
+ "fp16",
+ "--target-dtype",
+ "bf16",
+ "--fp-values-range",
+ "-2.0,2.0",
+ "--tensor-dim-range",
+ "20,64",
+ "--target-rank",
+ "1",
+ "--target-rank",
+ "2",
+ "--target-rank",
+ "3"
+ ],
+ [
+ "--target-dtype",
+ "fp32",
+ "--target-dtype",
+ "fp16",
+ "--target-dtype",
+ "bf16",
+ "--fp-values-range",
+ "-2.0,2.0",
+ "--tensor-dim-range",
+ "1,20",
+ "--target-rank",
+ "4",
+ "--target-rank",
+ "5"
+ ],
+ [
+ "--target-dtype",
+ "fp32",
+ "--fp-values-range",
+ "-2.0,2.0",
+ "--target-shape",
+ "1,2,1,65536",
+ "--target-shape",
+ "1,3,65537,1,1"
+ ]
+ ],
+ "params": {},
+ "permutes": [
+ "shape",
+ "type"
+ ],
+ "profile": [
+ "tosa-mi"
+ ]
+ },
"concat": {
"group": "data_layout",
"generator_args": [
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py
index d799eb0..c29763b 100644
--- a/verif/generator/tosa_test_gen.py
+++ b/verif/generator/tosa_test_gen.py
@@ -1072,10 +1072,15 @@ class TosaTestGen:
return None
attr = ts.TosaSerializerAttribute()
- if a.dtype in (DType.FP16, DType.BF16, DType.FP32):
- attr.ClampAttribute(0, 0, min_val, max_val)
+ if a.dtype in (DType.BF16, DType.FP16, DType.FP32):
+ if a.dtype == DType.FP16:
+ # Non-tensor fp16 ops take fp16 values as fp32 in reference_model
+ min_val = min_val.astype(np.float32)
+ max_val = max_val.astype(np.float32)
+
+ attr.ClampAttribute(self.ser.builder, 0, 0, min_val, max_val)
else:
- attr.ClampAttribute(min_val, max_val, 0, 0)
+ attr.ClampAttribute(self.ser.builder, min_val, max_val, 0, 0)
self.ser.addOperator(op["op"], input_list, output_list, attr)
return result_tens
@@ -1221,7 +1226,9 @@ class TosaTestGen:
result_tens = OutputShaper.padOp(self.ser, self.rng, a, padding, error_name)
attr = ts.TosaSerializerAttribute()
- attr.PadAttribute(padding.flatten(), pad_const_int, pad_const_float)
+ attr.PadAttribute(
+ self.ser.builder, padding.flatten(), pad_const_int, pad_const_float
+ )
# Invalidate Input/Output list for error if checks.
input_list = [a.name]