diff options
Diffstat (limited to 'verif/generator/tosa_test_gen.py')
-rw-r--r-- | verif/generator/tosa_test_gen.py | 22 |
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 |