aboutsummaryrefslogtreecommitdiff
path: root/verif/generator/tosa_test_gen.py
diff options
context:
space:
mode:
authorJeremy Johnson <jeremy.johnson@arm.com>2022-09-15 10:38:17 +0100
committerEric Kunze <eric.kunze@arm.com>2022-11-19 00:42:57 +0000
commite4b08ffbe457c8932740e3171964cf2e7cd69b4f (patch)
treeeaa7a48d1de8e1819398c63110e99f993c0aa847 /verif/generator/tosa_test_gen.py
parent52460a8b21e3691cd56b22e62986fa24012b8e68 (diff)
downloadreference_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.py34
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])