aboutsummaryrefslogtreecommitdiff
path: root/verif/generator/tosa_test_gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'verif/generator/tosa_test_gen.py')
-rw-r--r--verif/generator/tosa_test_gen.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py
index 0f68999..e7704f1 100644
--- a/verif/generator/tosa_test_gen.py
+++ b/verif/generator/tosa_test_gen.py
@@ -1,6 +1,7 @@
# Copyright (c) 2020-2024, ARM Limited.
# SPDX-License-Identifier: Apache-2.0
import json
+import logging
import os
from copy import deepcopy
from datetime import datetime
@@ -27,6 +28,9 @@ TOSA_AUTOGENERATED_HEADER = f"""// Copyright (c) {datetime.today().year}, ARM Li
// AUTO-GENERATED FILE CREATED BY tosa_verif_build_tests
"""
+logging.basicConfig()
+logger = logging.getLogger("tosa_verif_build_tests")
+
class TosaTestGen:
# Maximum rank of tensor supported by test generator.
@@ -2134,6 +2138,7 @@ class TosaTestGen:
double_round = args_dict["double_round"]
per_channel = args_dict["per_channel"]
shift_arr = args_dict["shift"]
+ multiplier_arr = args_dict["multiplier"]
result_tensor = OutputShaper.typeConversionOp(
self.ser, self.rng, val, out_dtype, error_name
@@ -2203,7 +2208,9 @@ class TosaTestGen:
min_shift_value_arr[i] = -1 << (shift_arr[i] - 1)
max_shift_value_arr[i] = (1 << (shift_arr[i] - 1)) - 1
- # print('multiplier {} shift {} inzp {} outzp {}'.format(multiplier_arr, shift_arr, input_zp, output_zp))
+ logger.debug(
+ f"build_rescale: multiplier={multiplier_arr} shift={shift_arr} inzp={input_zp} outzp={output_zp}"
+ )
if scale32 and error_name is None:
# Make sure random values are within apply_scale_32 specification
# REQUIRES(value >= (-1<<(shift-1)) && value < (1<<(shift-1))
@@ -2907,7 +2914,9 @@ class TosaTestGen:
cleanRankFilter = filterDict["rankFilter"]
cleanDtypeFilter = filterDict["dtypeFilter"]
cleanShapeFilter = filterDict["shapeFilter"]
- # print(f"Error: {error_name}, Filters: S {cleanShapeFilter}, R {cleanRankFilter}, T {cleanDtypeFilter}")
+ logger.debug(
+ f"genOpTestList: Error={error_name}, Filters S={cleanShapeFilter}, R={cleanRankFilter}, T={cleanDtypeFilter}"
+ )
for r in cleanRankFilter:
for t in cleanDtypeFilter:
@@ -2981,8 +2990,7 @@ class TosaTestGen:
except KeyError:
raise Exception("Cannot find op with name {}".format(opName))
- if self.args.verbose:
- print(f"Creating {testStr}")
+ logger.info(f"Creating {testStr}")
# Create a serializer
self.createSerializer(opName, testStr)
@@ -3062,7 +3070,7 @@ class TosaTestGen:
self.serialize("test", tensMeta)
else:
# The test is not valid
- print(f"Invalid ERROR_IF test created: {opName} {testStr}")
+ logger.error(f"Invalid ERROR_IF test created: {opName} {testStr}")
def createDynamicOpLists(self):
@@ -3084,6 +3092,7 @@ class TosaTestGen:
self.TOSA_OP_LIST[testName] = self.TOSA_OP_LIST["conv2d_TEMPLATE"].copy()
self.TOSA_OP_LIST[testName]["filter"] = k
self.TOSA_OP_LIST[testName]["template"] = False
+ self.TOSA_OP_LIST[testName]["real_name"] = "conv2d"
testName = "depthwise_conv2d_{}x{}".format(k[0], k[1])
self.TOSA_OP_LIST[testName] = self.TOSA_OP_LIST[
@@ -3091,6 +3100,7 @@ class TosaTestGen:
].copy()
self.TOSA_OP_LIST[testName]["filter"] = k
self.TOSA_OP_LIST[testName]["template"] = False
+ self.TOSA_OP_LIST[testName]["real_name"] = "depthwise_conv2d"
testName = "transpose_conv2d_{}x{}".format(k[0], k[1])
self.TOSA_OP_LIST[testName] = self.TOSA_OP_LIST[
@@ -3098,12 +3108,14 @@ class TosaTestGen:
].copy()
self.TOSA_OP_LIST[testName]["filter"] = k
self.TOSA_OP_LIST[testName]["template"] = False
+ self.TOSA_OP_LIST[testName]["real_name"] = "transpose_conv2d"
for k in KERNELS_3D:
testName = "conv3d_{}x{}x{}".format(k[0], k[1], k[2])
self.TOSA_OP_LIST[testName] = self.TOSA_OP_LIST["conv3d_TEMPLATE"].copy()
self.TOSA_OP_LIST[testName]["filter"] = k
self.TOSA_OP_LIST[testName]["template"] = False
+ self.TOSA_OP_LIST[testName]["real_name"] = "conv3d"
# Delete any templates after having created any dynamic ops
# This is a two-pass operation because it's bad practice to delete