diff options
author | Sadik Armagan <sadik.armagan@arm.com> | 2021-10-06 16:41:44 +0100 |
---|---|---|
committer | mike.kelly <mike.kelly@arm.com> | 2021-11-04 15:16:10 +0000 |
commit | 0a2dfabd76a45c58d0a14567f0503369c4e6fbf3 (patch) | |
tree | 035340e9f663d599f83992846e1772b161640654 /CacheDataHandler.hpp | |
parent | 1b46d132a3330692fcf9a603b21363a28f46ef03 (diff) | |
download | android-nn-driver-0a2dfabd76a45c58d0a14567f0503369c4e6fbf3.tar.gz |
IVGCVSW-5636 'Implement NNAPI caching functions'
* Cached serialized ArmNN model.
!armnn:6384
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I78120a7f8ea892a28c0ff25f1b54e67a4f912574
Diffstat (limited to 'CacheDataHandler.hpp')
-rw-r--r-- | CacheDataHandler.hpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/CacheDataHandler.hpp b/CacheDataHandler.hpp new file mode 100644 index 00000000..cea73d20 --- /dev/null +++ b/CacheDataHandler.hpp @@ -0,0 +1,68 @@ +// +// Copyright © 2021 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <HalInterfaces.h> + +#include <vector> +#include <unordered_map> + +#include <NeuralNetworks.h> + +namespace armnn_driver +{ + +using HidlToken = android::hardware::hidl_array<uint8_t, ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN>; + +class CacheHandle +{ +public: + CacheHandle(const HidlToken token, const size_t cacheSize) + : m_HidlToken(token), m_CacheSize(cacheSize) {} + + ~CacheHandle() {}; + + HidlToken GetToken() const + { + return m_HidlToken; + } + + size_t GetCacheSize() const + { + return m_CacheSize; + } + +private: + const HidlToken m_HidlToken; + const size_t m_CacheSize; +}; + +class CacheDataHandler +{ +public: + CacheDataHandler() {} + ~CacheDataHandler() {} + + void Register(const HidlToken token, const size_t hashValue, const size_t cacheSize); + + bool Validate(const HidlToken token, const size_t hashValue) const; + + size_t Hash(std::vector<uint8_t>& cacheData); + + size_t GetCacheSize(HidlToken token); + + void Clear(); + +private: + CacheDataHandler(const CacheDataHandler&) = delete; + CacheDataHandler& operator=(const CacheDataHandler&) = delete; + + std::unordered_map<size_t, CacheHandle> m_CacheDataMap; +}; + +CacheDataHandler& CacheDataHandlerInstance(); + +} // armnn_driver |