aboutsummaryrefslogtreecommitdiff
path: root/verif/tosa_verif_run_ref.py
diff options
context:
space:
mode:
authorKevin Cheng <kevin.cheng@arm.com>2021-03-03 11:21:43 -0800
committerKevin Cheng <kevin.cheng@arm.com>2021-04-27 16:01:59 -0700
commit550ccc52de231621c0bf0c05ae2a398eec37ff51 (patch)
treed4a5bd8d24560135784208c0fe35615b1d043249 /verif/tosa_verif_run_ref.py
parentcf6224e6e8ba4fc2984de3e542538c38e27c9f57 (diff)
downloadreference_model-550ccc52de231621c0bf0c05ae2a398eec37ff51.tar.gz
Replace serialization/ and verif/ with MLPlatform's serialization_lib submodule
- Remove Usage and Format - Run black on verif/*.py scripts Signed-off-by: Kevin Cheng <kevin.cheng@arm.com> Change-Id: Ie81515891eb0039540f614894f4b6b0e0e78ba74
Diffstat (limited to 'verif/tosa_verif_run_ref.py')
-rwxr-xr-xverif/tosa_verif_run_ref.py157
1 files changed, 113 insertions, 44 deletions
diff --git a/verif/tosa_verif_run_ref.py b/verif/tosa_verif_run_ref.py
index 2284e35..e3926ea 100755
--- a/verif/tosa_verif_run_ref.py
+++ b/verif/tosa_verif_run_ref.py
@@ -33,42 +33,90 @@ import importlib
from enum import IntEnum, Enum, unique
from datetime import datetime
-# Include the ../shared directory in PYTHONPATH
+# Include the ../scripts and ../scripts/xunit directory in PYTHONPATH
parent_dir = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(parent_dir, '..', 'scripts'))
-sys.path.append(os.path.join(parent_dir, '..', 'scripts', 'xunit'))
+sys.path.append(os.path.join(parent_dir, "..", "scripts"))
+sys.path.append(os.path.join(parent_dir, "..", "scripts", "xunit"))
+
import xunit
+
+# Include the ../thirdparty/serialization_lib/python directory in PYTHONPATH
+parent_dir = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(
+ os.path.join(parent_dir, "..", "thirdparty", "serialization_lib", "python")
+)
import tosa
from tosa_test_gen import TosaTestGen
from tosa_test_runner import TosaTestRunner
no_color_printing = False
-#from run_tf_unit_test import LogColors, print_color, run_sh_command
+# from run_tf_unit_test import LogColors, print_color, run_sh_command
+
def parseArgs():
parser = argparse.ArgumentParser()
- parser.add_argument('-t', '--test', dest='test', type=str, nargs='+',
- help='Test(s) to run')
- parser.add_argument('--seed', dest='random_seed', default=42, type=int,
- help='Random seed for test generation')
- parser.add_argument('--ref-model-path', dest='ref_model_path',
- default='build/reference_model/tosa_reference_model', type=str,
- help='Path to reference model executable')
- parser.add_argument('--ref-debug', dest='ref_debug', default='', type=str,
- help='Reference debug flag (low, med, high)')
- parser.add_argument('--ref-intermediates', dest='ref_intermediates', default=0, type=int,
- help='Reference model dumps intermediate tensors')
- parser.add_argument('-v', '--verbose', dest='verbose', action='count',
- help='Verbose operation')
- parser.add_argument('-j', '--jobs', dest='jobs', type=int, default=1,
- help='Number of parallel jobs')
- parser.add_argument('--sut-module', '-s', dest='sut_module', type=str, nargs='+', default=['tosa_ref_run'],
- help='System under test module to load (derives from TosaTestRunner). May be repeated')
- parser.add_argument('--sut-module-args', dest='sut_module_args', type=str, nargs='+', default=[],
- help='System under test module arguments. Use sutmodulename:argvalue to pass an argument. May be repeated.')
- parser.add_argument('--xunit-file', dest='xunit_file', type=str, default='result.xml',
- help='XUnit output file')
+ parser.add_argument(
+ "-t", "--test", dest="test", type=str, nargs="+", help="Test(s) to run"
+ )
+ parser.add_argument(
+ "--seed",
+ dest="random_seed",
+ default=42,
+ type=int,
+ help="Random seed for test generation",
+ )
+ parser.add_argument(
+ "--ref-model-path",
+ dest="ref_model_path",
+ default="build/reference_model/tosa_reference_model",
+ type=str,
+ help="Path to reference model executable",
+ )
+ parser.add_argument(
+ "--ref-debug",
+ dest="ref_debug",
+ default="",
+ type=str,
+ help="Reference debug flag (low, med, high)",
+ )
+ parser.add_argument(
+ "--ref-intermediates",
+ dest="ref_intermediates",
+ default=0,
+ type=int,
+ help="Reference model dumps intermediate tensors",
+ )
+ parser.add_argument(
+ "-v", "--verbose", dest="verbose", action="count", help="Verbose operation"
+ )
+ parser.add_argument(
+ "-j", "--jobs", dest="jobs", type=int, default=1, help="Number of parallel jobs"
+ )
+ parser.add_argument(
+ "--sut-module",
+ "-s",
+ dest="sut_module",
+ type=str,
+ nargs="+",
+ default=["tosa_ref_run"],
+ help="System under test module to load (derives from TosaTestRunner). May be repeated",
+ )
+ parser.add_argument(
+ "--sut-module-args",
+ dest="sut_module_args",
+ type=str,
+ nargs="+",
+ default=[],
+ help="System under test module arguments. Use sutmodulename:argvalue to pass an argument. May be repeated.",
+ )
+ parser.add_argument(
+ "--xunit-file",
+ dest="xunit_file",
+ type=str,
+ default="result.xml",
+ help="XUnit output file",
+ )
args = parser.parse_args()
@@ -78,6 +126,7 @@ def parseArgs():
return args
+
def workerThread(task_queue, runnerList, args, result_queue):
while True:
try:
@@ -88,21 +137,31 @@ def workerThread(task_queue, runnerList, args, result_queue):
if test is None:
break
- msg = ''
+ msg = ""
start_time = datetime.now()
try:
for runnerModule, runnerArgs in runnerList:
if args.verbose:
- print('Running runner {} with test {}'.format(runnerModule.__name__, test))
+ print(
+ "Running runner {} with test {}".format(
+ runnerModule.__name__, test
+ )
+ )
runner = runnerModule.TosaRefRunner(args, runnerArgs, test)
try:
rc = runner.runModel()
except Exception as e:
rc = TosaTestRunner.Result.INTERNAL_ERROR
except Exception as e:
- print('Internal regression error: {}'.format(e))
- print(''.join(traceback.format_exception(etype=type(e), value=e, tb=e.__traceback__)))
+ print("Internal regression error: {}".format(e))
+ print(
+ "".join(
+ traceback.format_exception(
+ etype=type(e), value=e, tb=e.__traceback__
+ )
+ )
+ )
rc = TosaTestRunner.Result.INTERNAL_ERROR
end_time = datetime.now()
@@ -112,25 +171,27 @@ def workerThread(task_queue, runnerList, args, result_queue):
return True
+
def loadRefModules(args):
# Returns a tuple of (runner_module, [argument list])
runnerList = []
for r in args.sut_module:
if args.verbose:
- print('Loading module {}'.format(r))
+ print("Loading module {}".format(r))
runner = importlib.import_module(r)
# Look for arguments associated with this runner
- runnerArgPrefix = '{}:'.format(r)
+ runnerArgPrefix = "{}:".format(r)
runnerArgList = []
for a in args.sut_module_args:
if a.startswith(runnerArgPrefix):
- runnerArgList.append(a[len(runnerArgPrefix):])
+ runnerArgList.append(a[len(runnerArgPrefix) :])
runnerList.append((runner, runnerArgList))
return runnerList
+
def main():
args = parseArgs()
@@ -143,10 +204,12 @@ def main():
for t in args.test:
taskQueue.put((t))
- print('Running {} tests '.format(taskQueue.qsize()))
+ print("Running {} tests ".format(taskQueue.qsize()))
for i in range(args.jobs):
- t = threading.Thread(target=workerThread, args=(taskQueue, runnerList, args, resultQueue))
+ t = threading.Thread(
+ target=workerThread, args=(taskQueue, runnerList, args, resultQueue)
+ )
t.setDaemon(True)
t.start()
threads.append(t)
@@ -165,34 +228,40 @@ def main():
resultList.append((test, rc, msg, time_delta))
results[rc] = results[rc] + 1
- xunit_result = xunit.xunit_results('Regressions')
- xunit_suite = xunit_result.create_suite('Unit tests')
+ xunit_result = xunit.xunit_results("Regressions")
+ xunit_suite = xunit_result.create_suite("Unit tests")
# Sort by test name
for test, rc, msg, time_delta in sorted(resultList, key=lambda tup: tup[0]):
test_name = test
- xt = xunit.xunit_test(test_name, 'reference')
+ xt = xunit.xunit_test(test_name, "reference")
- xt.time = str(float(time_delta.seconds) + (float(time_delta.microseconds) * 1e-6))
+ xt.time = str(
+ float(time_delta.seconds) + (float(time_delta.microseconds) * 1e-6)
+ )
- if rc == TosaTestRunner.Result.EXPECTED_PASS or rc == TosaTestRunner.Result.EXPECTED_FAILURE:
+ if (
+ rc == TosaTestRunner.Result.EXPECTED_PASS
+ or rc == TosaTestRunner.Result.EXPECTED_FAILURE
+ ):
if args.verbose:
- print('{} {}'.format(rc.name, test_name))
+ print("{} {}".format(rc.name, test_name))
else:
xt.failed(msg)
- print('{} {}'.format(rc.name, test_name))
+ print("{} {}".format(rc.name, test_name))
xunit_suite.tests.append(xt)
resultQueue.task_done()
xunit_result.write_results(args.xunit_file)
- print('Totals: ', end='')
+ print("Totals: ", end="")
for result in TosaTestRunner.Result:
- print('{} {}, '.format(results[result], result.name.lower()), end ='')
+ print("{} {}, ".format(results[result], result.name.lower()), end="")
print()
return 0
-if __name__ == '__main__':
+
+if __name__ == "__main__":
exit(main())