From c8a22f198c4fb23735962fee00c062b0325ca6a6 Mon Sep 17 00:00:00 2001 From: Patrik Gustavsson Date: Wed, 18 Nov 2020 17:05:50 +0100 Subject: 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 Change-Id: I0143b50adf884a2b05145912a1c7bef8cecc5f02 --- OPTIONS.md | 11 +++++++++ ethosu/vela/api.py | 14 ++++++++++++ ethosu/vela/test/extapi/test_extapi_encode_bias.py | 4 ---- .../vela/test/extapi/test_extapi_encode_weights.py | 6 ----- ethosu/vela/test/extapi/test_extapi_get_version.py | 26 ++++++++++++++++++++++ ethosu/vela/vela.py | 4 ++++ 6 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 ethosu/vela/test/extapi/test_extapi_get_version.py diff --git a/OPTIONS.md b/OPTIONS.md index 7d123517..f02b91e9 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 06de0d9a..0799ab1c 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 59b85873..ffdd3b0c 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 356bbc1a..0459cae1 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 00000000..3a6f25c4 --- /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 5df21f56..9f5c78c3 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 @@ -189,6 +190,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", -- cgit v1.2.1