diff options
author | Jeremy Johnson <jeremy.johnson@arm.com> | 2023-11-15 11:00:49 +0000 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2023-11-16 21:24:34 +0000 |
commit | 30a41db0c89f8209ab710c1d312fd6697107a41b (patch) | |
tree | 3ebff243aa29fa2f538064852c3fa2950c4f96a3 | |
parent | 9a758384d1066ade713311940f3d15c860f90866 (diff) | |
download | reference_model-30a41db0c89f8209ab710c1d312fd6697107a41b.tar.gz |
Fix FP16, BF16 data ranges for conformance tests
Enable use of data ranges for old data gen path as well
as the new generate library path, so that FP16 and BF16 test data
is produced within the correct ranges.
Signed-off-by: Jeremy Johnson <jeremy.johnson@arm.com>
Change-Id: I749870a3112f8c3a75f4d16b8322c813fbf977cd
-rw-r--r-- | verif/generator/tosa_arg_gen.py | 29 | ||||
-rw-r--r-- | verif/generator/tosa_test_gen.py | 7 |
2 files changed, 17 insertions, 19 deletions
diff --git a/verif/generator/tosa_arg_gen.py b/verif/generator/tosa_arg_gen.py index 454013a..6675025 100644 --- a/verif/generator/tosa_arg_gen.py +++ b/verif/generator/tosa_arg_gen.py @@ -654,28 +654,24 @@ class TosaTensorValuesGen: ): # Variable inputs versus constants pCount, cCount = testGen.TOSA_OP_LIST[opName]["operands"] + tens_ser_list = [] if ( error_name is not None or not gtu.dtypeIsSupportedByCompliance(dtypeList[0]) or "data_gen" not in testGen.TOSA_OP_LIST[opName] ): - # Fall back to original path when dealing with unsupported types or ops - - # First turn off lazy data gen so we always produce data - lazy_data_gen = testGen.args.lazy_data_gen - testGen.args.lazy_data_gen = False - - tens_ser_list = TosaTensorValuesGen.tvgDefault( - testGen, - testGen.TOSA_OP_LIST[opName], - dtypeList, - shapeList, - [], - error_name, - ) - # Restore lazy data gen setting - testGen.args.lazy_data_gen = lazy_data_gen + # Fall back to internal data gen when dealing with unsupported types or ops + data_range = argsDict["data_range"] if "data_range" in argsDict else None + for idx, info in enumerate(zip(shapeList, dtypeList)): + shape, dtype = info + # Ignore lazy data gen option and create data array using any range limits + arr = testGen.getRandTensor(shape, dtype, data_range) + if idx < pCount: + tens_ser_list.append(testGen.ser.addPlaceholder(shape, dtype, arr)) + else: + tens_ser_list.append(testGen.ser.addConst(shape, dtype, arr)) + return TosaTensorValuesGen.TVGInfo(tens_ser_list, None) # Create data generator meta-data @@ -685,7 +681,6 @@ class TosaTensorValuesGen: "tensors": {}, } dg_tens_meta = tens_data["tensors"] - tens_ser_list = [] for idx, shape in enumerate(shapeList): tens_meta = {} diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py index 3e5aee8..9dc3199 100644 --- a/verif/generator/tosa_test_gen.py +++ b/verif/generator/tosa_test_gen.py @@ -176,8 +176,11 @@ class TosaTestGen: # Inclusive range: low <= range <= high return (rng[0], rng[1] - 1) - def getRandTensor(self, shape, dtype): - low, high = self.getDTypeRange(dtype) + def getRandTensor(self, shape, dtype, data_range=None): + if data_range is None: + low, high = self.getDTypeRange(dtype) + else: + low, high = data_range if dtype == DType.BOOL: return np.bool_(self.rng.choice(a=[False, True], size=shape)) |