aboutsummaryrefslogtreecommitdiff
path: root/delegate/python/test/test_external_delegate.py
diff options
context:
space:
mode:
authorJan Eilers <jan.eilers@arm.com>2020-12-15 10:42:38 +0000
committerJim Flynn <jim.flynn@arm.com>2021-01-22 11:48:34 +0000
commit2cd184763ff7f8767e751f2fe0c461714350aae6 (patch)
tree048a95b2b571bfa3ad03eceb5dd4ccd4d0a70c06 /delegate/python/test/test_external_delegate.py
parentd672f5d4386dc0545d2e484ce85b76d53edb6bc9 (diff)
downloadarmnn-2cd184763ff7f8767e751f2fe0c461714350aae6.tar.gz
IVGCVSW-5571 Expose the TfLite Delegate to the TfLite python API
* Implemented external delegate adaptor interface for TfLite * Activated armnn logging for delegate * Added logging info to indicate if gpu tuning is turned on * Added pytests to ensure functionality of the external delegate adaptor * Included the delegate directory into doxygen * Added documentation on how to use the external delegate in python Signed-off-by: Finn Williams <Finn.Williams@arm.com> Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: Id3b4588fb0b9ac7e3f47ba2c19feead7beb58e18
Diffstat (limited to 'delegate/python/test/test_external_delegate.py')
-rw-r--r--delegate/python/test/test_external_delegate.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/delegate/python/test/test_external_delegate.py b/delegate/python/test/test_external_delegate.py
new file mode 100644
index 0000000000..995de8cd70
--- /dev/null
+++ b/delegate/python/test/test_external_delegate.py
@@ -0,0 +1,65 @@
+# Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+
+import pytest
+import tflite_runtime.interpreter as tflite
+import os
+from utils import run_mock_model
+
+
+def test_external_delegate_unknown_options(delegate_dir):
+ print(delegate_dir)
+ with pytest.raises(ValueError):
+ tflite.load_delegate(
+ delegate_dir,
+ options={"wrong": "wrong"})
+
+
+def test_external_delegate_options_multiple_backends(delegate_dir):
+ tflite.load_delegate(
+ delegate_dir,
+ options={"backends": "GpuAcc,CpuAcc,CpuRef,Unknown"})
+
+
+@pytest.mark.GpuAccTest
+def test_external_delegate_options_gpu_tuning(delegate_dir, test_data_folder, tmp_path):
+
+ tuning_file = os.path.join(str(tmp_path), "test_gpu.tuning")
+ # cleanup previous test run if necessary
+ if os.path.exists(tuning_file):
+ os.remove(tuning_file)
+
+ # with tuning level 2 a tuning file should be created
+ armnn_delegate = tflite.load_delegate(
+ delegate_dir,
+ options={
+ "backends": "GpuAcc",
+ "gpu-tuning-level": "2",
+ "gpu-tuning-file": tuning_file,
+ "logging-severity": "info"})
+
+ run_mock_model(armnn_delegate, test_data_folder)
+
+ # destroy delegate, otherwise tuning file won't be written to file
+ armnn_delegate.__del__()
+ assert (os.path.exists(tuning_file))
+
+ # if no tuning level is provided it defaults to 0 which means it will use the tuning parameters from a tuning
+ # file if one is provided
+ armnn_delegate2 = tflite.load_delegate(
+ delegate_dir,
+ options={
+ "backends": "GpuAcc",
+ "gpu-tuning-file": tuning_file,
+ "logging-severity": "info"})
+
+ run_mock_model(armnn_delegate2, test_data_folder)
+
+ # cleanup
+ os.remove(tuning_file)
+
+def test_external_delegate_options_wrong_logging_level(delegate_dir):
+ with pytest.raises(ValueError):
+ tflite.load_delegate(
+ delegate_dir,
+ options={"logging-severity": "wrong"})