From e9c3f076d1e99c11729627723d008b6686946995 Mon Sep 17 00:00:00 2001 From: Mikael Olsson Date: Mon, 12 Jun 2023 15:58:10 +0200 Subject: Add version to driver library A version has been added to the driver library so users can check if they are compatible with the driver library in use. The Python wrapper has been updated accordingly to make the version information available. Change-Id: I8affbf7068c057f7103adf14c9e4a331d547fbcc Signed-off-by: Mikael Olsson --- driver_library/include/ethosu.hpp | 6 ++++++ driver_library/python/src/ethosu_driver/__init__.py | 5 ++++- driver_library/python/src/ethosu_driver/swig/driver.i | 13 +++++++++++++ driver_library/python/test/test_driver.py | 7 +++++++ driver_library/src/ethosu.cpp | 5 +++++ utils/inference_runner/inference_runner.cpp | 4 +++- 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/driver_library/include/ethosu.hpp b/driver_library/include/ethosu.hpp index 4dba469..491dc28 100644 --- a/driver_library/include/ethosu.hpp +++ b/driver_library/include/ethosu.hpp @@ -40,6 +40,10 @@ namespace EthosU { +constexpr uint32_t DRIVER_LIBRARY_VERSION_MAJOR = 1; +constexpr uint32_t DRIVER_LIBRARY_VERSION_MINOR = 0; +constexpr uint32_t DRIVER_LIBRARY_VERSION_PATCH = 0; + constexpr uint32_t MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION = 1; constexpr uint32_t MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION = 1; @@ -75,6 +79,8 @@ public: std::ostream &operator<<(std::ostream &out, const SemanticVersion &v); +const SemanticVersion getLibraryVersion(); + /* * Hardware Identifier * @versionStatus: Version status diff --git a/driver_library/python/src/ethosu_driver/__init__.py b/driver_library/python/src/ethosu_driver/__init__.py index a804c13..20c5f52 100644 --- a/driver_library/python/src/ethosu_driver/__init__.py +++ b/driver_library/python/src/ethosu_driver/__init__.py @@ -2,6 +2,9 @@ # SPDX-License-Identifier: Apache-2.0 from ._generated.driver import Device, Inference, Network, Buffer, \ - MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION + MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION, \ + DRIVER_LIBRARY_VERSION_MAJOR, DRIVER_LIBRARY_VERSION_MINOR, DRIVER_LIBRARY_VERSION_PATCH, \ + getLibraryVersion + from ._utilities import open_device, load_model, populate_buffers, \ allocate_buffers, get_results, InferenceRunner diff --git a/driver_library/python/src/ethosu_driver/swig/driver.i b/driver_library/python/src/ethosu_driver/swig/driver.i index 558c22e..1ff8ded 100644 --- a/driver_library/python/src/ethosu_driver/swig/driver.i +++ b/driver_library/python/src/ethosu_driver/swig/driver.i @@ -38,6 +38,10 @@ namespace std { namespace EthosU { +constexpr uint32_t DRIVER_LIBRARY_VERSION_MAJOR; +constexpr uint32_t DRIVER_LIBRARY_VERSION_MINOR; +constexpr uint32_t DRIVER_LIBRARY_VERSION_PATCH; + constexpr uint32_t MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION; constexpr uint32_t MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION; @@ -63,6 +67,15 @@ public: } } +%feature("docstring", +" + Return driver library version information. + + Returns: + SemanticVersion: driver library version. +") getLibraryVersion; +const SemanticVersion getLibraryVersion(); + %feature("docstring", " Hardware Identifier which consists of version status, version revision, product revision and architecture revision. diff --git a/driver_library/python/test/test_driver.py b/driver_library/python/test/test_driver.py index e4e276a..28d0a29 100644 --- a/driver_library/python/test/test_driver.py +++ b/driver_library/python/test/test_driver.py @@ -188,3 +188,10 @@ def test_kernel_driver_version(device): assert driver.MAX_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION assert driver.MIN_SUPPORTED_KERNEL_DRIVER_MAJOR_VERSION +def test_driver_library_version(): + version = driver.getLibraryVersion() + expected_version = [driver.DRIVER_LIBRARY_VERSION_MAJOR, + driver.DRIVER_LIBRARY_VERSION_MINOR, + driver.DRIVER_LIBRARY_VERSION_PATCH] + # Validate that the expected version was returned + assert expected_version == [version.major, version.minor, version.patch] diff --git a/driver_library/src/ethosu.cpp b/driver_library/src/ethosu.cpp index 1758b07..64aee4d 100644 --- a/driver_library/src/ethosu.cpp +++ b/driver_library/src/ethosu.cpp @@ -96,6 +96,11 @@ const Severity Log::level = Log::getLogLevel(); } // namespace namespace EthosU { + +const SemanticVersion getLibraryVersion() { + return {DRIVER_LIBRARY_VERSION_MAJOR, DRIVER_LIBRARY_VERSION_MINOR, DRIVER_LIBRARY_VERSION_PATCH}; +} + __attribute__((weak)) int eioctl(int fd, unsigned long cmd, void *data = nullptr) { int ret = ::ioctl(fd, cmd, data); if (ret < 0) { diff --git a/utils/inference_runner/inference_runner.cpp b/utils/inference_runner/inference_runner.cpp index d53ab8c..569fda6 100644 --- a/utils/inference_runner/inference_runner.cpp +++ b/utils/inference_runner/inference_runner.cpp @@ -210,8 +210,10 @@ int main(int argc, char *argv[]) { } try { + cout << "Driver library version:" << getLibraryVersion() << endl; + Device device; - cout << "Driver version:" << device.getDriverVersion() << endl; + cout << "Kernel driver version:" << device.getDriverVersion() << endl; cout << "Send Ping" << endl; device.ioctl(ETHOSU_IOCTL_PING); -- cgit v1.2.1