diff options
author | Jeremy Johnson <jeremy.johnson@arm.com> | 2022-09-15 10:38:17 +0100 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2022-11-19 00:42:57 +0000 |
commit | e4b08ffbe457c8932740e3171964cf2e7cd69b4f (patch) | |
tree | eaa7a48d1de8e1819398c63110e99f993c0aa847 /verif/generator/tosa_test_gen.py | |
parent | 52460a8b21e3691cd56b22e62986fa24012b8e68 (diff) | |
download | reference_model-e4b08ffbe457c8932740e3171964cf2e7cd69b4f.tar.gz |
Initial set up of Main Inference conformance test gen
tosa-verif-build-tests
- option for setting FP values range
- option for recursively finding tests
- change from os.path to Path
tosa_verif_result_check
- option to supply FP tolerance
- output difference and max tolerance on contents mismatch
- change from os.path to Path
MI conformance - contains examples of AVG_POOL2D and CONV2D tests
Signed-off-by: Jeremy Johnson <jeremy.johnson@arm.com>
Change-Id: I8e1645cd8f10308604400ea53eef723ca163eed7
Diffstat (limited to 'verif/generator/tosa_test_gen.py')
-rw-r--r-- | verif/generator/tosa_test_gen.py | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py index 95e06ed..f3ca512 100644 --- a/verif/generator/tosa_test_gen.py +++ b/verif/generator/tosa_test_gen.py @@ -36,6 +36,9 @@ class TosaTestGen: self.quantGen = TosaQuantGen() # Force makeShape to do a specific starting shape self.targetted_shape = None + # Work out floating point range + self.random_fp_low = min(args.tensor_fp_value_range) + self.random_fp_high = max(args.tensor_fp_value_range) def createSerializer(self, opName, testPath): self.testPath = os.path.join(opName, testPath) @@ -84,13 +87,25 @@ class TosaTestGen: self.rng.integers(low=-(1 << 47), high=(1 << 47), size=shape) ) elif dtype == DType.FP16: - return np.float16(self.rng.random(size=shape)) + return np.float16( + self.rng.uniform( + low=self.random_fp_low, high=self.random_fp_high, size=shape + ) + ) elif dtype == DType.BF16: - f32_tensor = np.float32(self.rng.random(size=shape)) + f32_tensor = np.float32( + self.rng.uniform( + low=self.random_fp_low, high=self.random_fp_high, size=shape + ) + ) # Floor the last 16 bits of each f32 value return np.float32(vect_f32_to_bf16(f32_tensor)) elif dtype == DType.FP32: - return np.float32(self.rng.random(size=shape)) + return np.float32( + self.rng.uniform( + low=self.random_fp_low, high=self.random_fp_high, size=shape + ) + ) else: raise Exception("Unrecognized Dtype: {}".format(dtype)) @@ -135,12 +150,17 @@ class TosaTestGen: def getRandNumberDType(self, dtype): if dtype == DType.FP32: - return self.rng.random() + return np.float32( + self.rng.uniform(low=self.random_fp_low, high=self.random_fp_high) + ) elif dtype == DType.FP16: - rand_f32 = self.rng.random() - return np.float16(rand_f32) + return np.float16( + self.rng.uniform(low=self.random_fp_low, high=self.random_fp_high) + ) elif dtype == DType.BF16: - rand_f32 = self.rng.random() + rand_f32 = np.float32( + self.rng.uniform(low=self.random_fp_low, high=self.random_fp_high) + ) return vect_f32_to_bf16(rand_f32) elif dtype == DType.BOOL: return self.rng.choice([False, True]) |