aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Gustavsson <patrik.gustavsson@arm.com>2020-11-18 17:05:50 +0100
committerpatrik.gustavsson <patrik.gustavsson@arm.com>2020-11-19 12:12:07 +0000
commitc8a22f198c4fb23735962fee00c062b0325ca6a6 (patch)
treee9a99cb102d43471a6454267170aa7e5ba3b541f
parentbdf09f9eca75fab14298a94a5402efc15f698e68 (diff)
downloadethos-u-vela-c8a22f198c4fb23735962fee00c062b0325ca6a6.tar.gz
MLBEDSW-3251 Add version to external API
Added version to the external API -Added CLI-option --api_version -Added API function to get the API version Signed-off-by: Patrik Gustavsson <patrik.gustavsson@arm.com> Change-Id: I0143b50adf884a2b05145912a1c7bef8cecc5f02
-rw-r--r--OPTIONS.md11
-rw-r--r--ethosu/vela/api.py14
-rw-r--r--ethosu/vela/test/extapi/test_extapi_encode_bias.py4
-rw-r--r--ethosu/vela/test/extapi/test_extapi_encode_weights.py6
-rw-r--r--ethosu/vela/test/extapi/test_extapi_get_version.py26
-rw-r--r--ethosu/vela/vela.py4
6 files changed, 55 insertions, 10 deletions
diff --git a/OPTIONS.md b/OPTIONS.md
index 7d12351..f02b91e 100644
--- a/OPTIONS.md
+++ b/OPTIONS.md
@@ -38,6 +38,17 @@ required Network argument.
vela --version
```
+### API version
+
+Displays the version of the external API. Can be used without the
+required Network argument.
+**Type: N/A**
+**Default: N/A**
+
+```bash
+vela --api-version
+```
+
### Supported Operator Report
Generate the SUPPORTED_OPS.md file in the current working directory and exits.
diff --git a/ethosu/vela/api.py b/ethosu/vela/api.py
index 06de0d9..0799ab1 100644
--- a/ethosu/vela/api.py
+++ b/ethosu/vela/api.py
@@ -23,6 +23,10 @@ from typing import NamedTuple
from typing import Optional
from typing import Tuple
+API_version_major = 1
+API_version_minor = 0
+api_version = f"{API_version_major}.{API_version_minor}"
+
class NpuElementWiseOp(Enum):
"""
@@ -367,3 +371,13 @@ class NpuElementWiseOperation(NpuBlockOperation):
self.reversed_operands: bool = False
# Set to a tuple (scale, shift) for explicit rescale, else to None
self.rescale: Optional[Tuple] = None
+
+
+def npu_get_API_version():
+ """
+ Public facing API to get the API version
+ :return: int, the 16 most significant bits, corresponding to major version
+ the 16 least significant bits, corresponding to minor version
+ """
+ version = (API_version_major << 16) | (API_version_minor & 0xFFFF)
+ return version
diff --git a/ethosu/vela/test/extapi/test_extapi_encode_bias.py b/ethosu/vela/test/extapi/test_extapi_encode_bias.py
index 59b8587..ffdd3b0 100644
--- a/ethosu/vela/test/extapi/test_extapi_encode_bias.py
+++ b/ethosu/vela/test/extapi/test_extapi_encode_bias.py
@@ -37,7 +37,3 @@ def test_encode_bias():
biases_enc = encode_bias(bias, scale, shift)
assert isinstance(biases_enc, bytearray)
assert len(biases_enc) == 10
-
-
-if __name__ == "__main__":
- test_encode_bias()
diff --git a/ethosu/vela/test/extapi/test_extapi_encode_weights.py b/ethosu/vela/test/extapi/test_extapi_encode_weights.py
index 356bbc1..0459cae 100644
--- a/ethosu/vela/test/extapi/test_extapi_encode_weights.py
+++ b/ethosu/vela/test/extapi/test_extapi_encode_weights.py
@@ -66,9 +66,3 @@ def test_encode_weights(
block_traversal=block_traversal,
)
assert type(encoded_stream) == bytearray
-
-
-if __name__ == "__main__":
- # two test candidates for debugging purposes
- test_encode_weights(Accelerator.Ethos_U55_256, ((3, 3, 25, 16), 8), 1, 1, 8, 0)
- test_encode_weights(Accelerator.Ethos_U55_256, ((16, 16, 16, 16), 8), 1, 1, 8, 0)
diff --git a/ethosu/vela/test/extapi/test_extapi_get_version.py b/ethosu/vela/test/extapi/test_extapi_get_version.py
new file mode 100644
index 0000000..3a6f25c
--- /dev/null
+++ b/ethosu/vela/test/extapi/test_extapi_get_version.py
@@ -0,0 +1,26 @@
+# Copyright (C) 2020 Arm Limited or its affiliates. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the License); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an AS IS BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# Description:
+# Contains unit tests for get API version for an external consumer
+from ethosu.vela.api import api_version
+from ethosu.vela.api import npu_get_API_version
+
+
+def test_npu_get_API_version():
+ int_version = npu_get_API_version()
+ version_major = int_version >> 16
+ version_minor = 0xFFFF & int_version
+ assert api_version == f"{version_major}.{version_minor}"
diff --git a/ethosu/vela/vela.py b/ethosu/vela/vela.py
index 5df21f5..9f5c78c 100644
--- a/ethosu/vela/vela.py
+++ b/ethosu/vela/vela.py
@@ -31,6 +31,7 @@ from . import scheduler
from . import stats_writer
from . import tflite_writer
from ._version import __version__
+from .api import api_version
from .debug_database import DebugDatabase
from .errors import InputFileError
from .nn_graph import PassPlacement
@@ -190,6 +191,9 @@ def main(args=None):
parser = argparse.ArgumentParser(prog="vela", description="Neural network model compiler for Ethos-U55")
parser.add_argument("--version", action="version", version=__version__)
parser.add_argument(
+ "--api-version", action="version", version=api_version, help="Displays the version of the external API."
+ )
+ parser.add_argument(
"--supported-ops-report",
action="store_true",
help="Generate the SUPPORTED_OPS.md file in the current working directory and exits.",