From 3407125ce2a470216bd54f8bb3ab5216f617c1be Mon Sep 17 00:00:00 2001 From: James Ward Date: Wed, 7 Dec 2022 15:48:47 +0000 Subject: Create MI tests for Activation: CLAMP; Data Layout: PAD * Existing float attributes now serialized as bytes Signed-off-by: James Ward Change-Id: I415276706b9daf0893e3a59189f387f872ff07c2 --- reference_model/src/ops/data_layout.cc | 1 + thirdparty/serialization_lib | 2 +- verif/conformance/tosa_main_profile_ops_info.json | 57 +++++++++++++++++++++++ verif/generator/tosa_test_gen.py | 15 ++++-- 4 files changed, 70 insertions(+), 5 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::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 index ca7ce0e..e36f4f7 160000 --- a/thirdparty/serialization_lib +++ b/thirdparty/serialization_lib @@ -1 +1 @@ -Subproject commit ca7ce0e94b3ee7339f31b47baa3a3fb4522243a2 +Subproject commit e36f4f70b51c03712db96ea284e6e54b3e60a74c 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] -- cgit v1.2.1