From 3c6a260a705a668b5ff8e8159f04c257273fb458 Mon Sep 17 00:00:00 2001 From: Kristofer Jonsson Date: Thu, 10 Mar 2022 11:17:29 +0100 Subject: Network info Add UAPI and core message that allows user space space to fetch information about network models built into the firmware. Change-Id: Ic92529bce3edd0a5499e691a566bd065da2a72ad --- driver_library/CMakeLists.txt | 2 +- driver_library/include/ethosu.hpp | 4 ++-- driver_library/src/ethosu.cpp | 26 ++++++++++---------------- driver_library/src/ethosu_stub.cpp | 2 +- 4 files changed, 14 insertions(+), 20 deletions(-) (limited to 'driver_library') diff --git a/driver_library/CMakeLists.txt b/driver_library/CMakeLists.txt index 4444357..41eb115 100644 --- a/driver_library/CMakeLists.txt +++ b/driver_library/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (c) 2020 Arm Limited. All rights reserved. +# Copyright (c) 2020,2022 Arm Limited. # # SPDX-License-Identifier: Apache-2.0 # diff --git a/driver_library/include/ethosu.hpp b/driver_library/include/ethosu.hpp index 0738aa2..e4fd4f1 100644 --- a/driver_library/include/ethosu.hpp +++ b/driver_library/include/ethosu.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022 Arm Limited. All rights reserved. + * Copyright (c) 2020-2022 Arm Limited. * * SPDX-License-Identifier: Apache-2.0 * @@ -161,7 +161,7 @@ private: class Network { public: Network(const Device &device, std::shared_ptr &buffer); - Network(const Device &device, const std::string &model, const unsigned index); + Network(const Device &device, const unsigned index); virtual ~Network(); int ioctl(unsigned long cmd, void *data = nullptr); diff --git a/driver_library/src/ethosu.cpp b/driver_library/src/ethosu.cpp index 16d2db0..f792399 100644 --- a/driver_library/src/ethosu.cpp +++ b/driver_library/src/ethosu.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022 Arm Limited. All rights reserved. + * Copyright (c) 2020-2022 Arm Limited. * * SPDX-License-Identifier: Apache-2.0 * @@ -305,7 +305,7 @@ Network::Network(const Device &device, shared_ptr &buffer) : fd(-1), buf } } -Network::Network(const Device &device, const string &model, const unsigned index) : fd(-1) { +Network::Network(const Device &device, const unsigned index) : fd(-1) { // Create buffer handle ethosu_uapi_network_create uapi; uapi.type = ETHOSU_UAPI_NETWORK_INDEX; @@ -313,22 +313,16 @@ Network::Network(const Device &device, const string &model, const unsigned index fd = device.ioctl(ETHOSU_IOCTL_NETWORK_CREATE, static_cast(&uapi)); try { - // Open file - ifstream ifs(model, std::ios::binary); - if (!ifs.is_open()) { - throw Exception("Failed to open model file."); - } - - // Get file size - ifs.seekg(0, ios_base::end); - size_t size = ifs.tellg(); - ifs.seekg(0, ios_base::beg); + ethosu_uapi_network_info info; + ioctl(ETHOSU_IOCTL_NETWORK_INFO, static_cast(&info)); - // Read data into buffer - vector buffer(size); - ifs.read(buffer.data(), size); + for (uint32_t i = 0; i < info.ifm_count; i++) { + ifmDims.push_back(info.ifm_size[i]); + } - parseModel(buffer.data()); + for (uint32_t i = 0; i < info.ofm_count; i++) { + ofmDims.push_back(info.ofm_size[i]); + } } catch (...) { eclose(fd); throw; diff --git a/driver_library/src/ethosu_stub.cpp b/driver_library/src/ethosu_stub.cpp index 428d276..d85f653 100644 --- a/driver_library/src/ethosu_stub.cpp +++ b/driver_library/src/ethosu_stub.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2021 Arm Limited. All rights reserved. + * Copyright (c) 2020-2022 Arm Limited. * * SPDX-License-Identifier: Apache-2.0 * -- cgit v1.2.1