diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2023-03-14 12:10:28 +0000 |
---|---|---|
committer | Teresa Charlin <teresa.charlinreyes@arm.com> | 2023-03-28 11:41:55 +0100 |
commit | ad1b3d7518429e2d16a2695d9b0bbf81b6565ac9 (patch) | |
tree | a5b8e1ad68a2437f007338f0b6195ca5ed2bddc3 /delegate/include/armnn_delegate.hpp | |
parent | 9cb3466b677a1048b8abb24661e92c4c83fdda04 (diff) | |
download | armnn-ad1b3d7518429e2d16a2695d9b0bbf81b6565ac9.tar.gz |
IVGCVSW-7555 Restructure Delegate
* New folders created:
* common is for common code where TfLite API is not used
* classic is for existing delegate implementations
* opaque is for new opaque delegate implementation,
* tests is for shared between existing Delegate and Opaque Delegate which have test utils to work which delegate to use.
* Existing delegate is built to libarmnnDelegate.so and opaque delegate is built as libarmnnOpaqueDelegate.so
* Opaque structure is introduced but no API is added yet.
* CmakeList.txt and delegate/CMakeList.txt have been modified and 2 new CmakeList.txt added
* Rename BUILD_ARMNN_TFLITE_DELEGATE as BUILD_CLASSIC_DELEGATE
* Rename BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE as BUILD_OPAQUE_DELEGATE
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ib682b9ad0ac8d8acdc4ec6d9099bb0008a9fe8ed
Diffstat (limited to 'delegate/include/armnn_delegate.hpp')
-rw-r--r-- | delegate/include/armnn_delegate.hpp | 141 |
1 files changed, 3 insertions, 138 deletions
diff --git a/delegate/include/armnn_delegate.hpp b/delegate/include/armnn_delegate.hpp index 9cfc397550..fd071eb24a 100644 --- a/delegate/include/armnn_delegate.hpp +++ b/delegate/include/armnn_delegate.hpp @@ -3,141 +3,6 @@ // SPDX-License-Identifier: MIT // -#pragma once - -#include "DelegateOptions.hpp" - -#include <tensorflow/lite/builtin_ops.h> -#include <tensorflow/lite/c/builtin_op_data.h> -#include <tensorflow/lite/c/common.h> -#include <tensorflow/lite/minimal_logging.h> -#include <tensorflow/lite/version.h> - -#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 3) -#define ARMNN_POST_TFLITE_2_3 -#endif - -#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 4) -#define ARMNN_POST_TFLITE_2_4 -#endif - -#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 5) -#define ARMNN_POST_TFLITE_2_5 -#endif - -namespace armnnDelegate -{ - -struct DelegateData -{ - DelegateData(const std::vector<armnn::BackendId>& backends) - : m_Backends(backends) - , m_Network(nullptr, nullptr) - {} - - const std::vector<armnn::BackendId> m_Backends; - armnn::INetworkPtr m_Network; - std::vector<armnn::IOutputSlot*> m_OutputSlotForNode; -}; - -// Forward decleration for functions initializing the ArmNN Delegate -DelegateOptions TfLiteArmnnDelegateOptionsDefault(); - -TfLiteDelegate* TfLiteArmnnDelegateCreate(armnnDelegate::DelegateOptions options); - -void TfLiteArmnnDelegateDelete(TfLiteDelegate* tfLiteDelegate); - -TfLiteStatus DoPrepare(TfLiteContext* context, TfLiteDelegate* delegate); - -/// ArmNN Delegate -class Delegate -{ - friend class ArmnnSubgraph; -public: - explicit Delegate(armnnDelegate::DelegateOptions options); - - TfLiteIntArray* IdentifyOperatorsToDelegate(TfLiteContext* context); - - TfLiteDelegate* GetDelegate(); - - /// Retrieve version in X.Y.Z form - static const std::string GetVersion(); - -private: - /** - * Returns a pointer to the armnn::IRuntime* this will be shared by all armnn_delegates. - */ - armnn::IRuntime* GetRuntime(const armnn::IRuntime::CreationOptions& options) - { - static armnn::IRuntimePtr instance = armnn::IRuntime::Create(options); - // Instantiated on first use. - return instance.get(); - } - - TfLiteDelegate m_Delegate = { - reinterpret_cast<void*>(this), // .data_ - DoPrepare, // .Prepare - nullptr, // .CopyFromBufferHandle - nullptr, // .CopyToBufferHandle - nullptr, // .FreeBufferHandle - kTfLiteDelegateFlagsNone, // .flags - nullptr, // .opaque_delegate_builder - }; - - /// ArmNN Runtime pointer - armnn::IRuntime* m_Runtime; - /// ArmNN Delegate Options - armnnDelegate::DelegateOptions m_Options; -}; - -/// ArmnnSubgraph class where parsing the nodes to ArmNN format and creating the ArmNN Graph -class ArmnnSubgraph -{ -public: - static ArmnnSubgraph* Create(TfLiteContext* tfLiteContext, - const TfLiteDelegateParams* parameters, - const Delegate* delegate); - - TfLiteStatus Prepare(TfLiteContext* tfLiteContext); - - TfLiteStatus Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfLiteNode); - - static TfLiteStatus VisitNode(DelegateData& delegateData, - TfLiteContext* tfLiteContext, - TfLiteRegistration* tfLiteRegistration, - TfLiteNode* tfLiteNode, - int nodeIndex); - -private: - ArmnnSubgraph(armnn::NetworkId networkId, - armnn::IRuntime* runtime, - std::vector<armnn::BindingPointInfo>& inputBindings, - std::vector<armnn::BindingPointInfo>& outputBindings) - : m_NetworkId(networkId), m_Runtime(runtime), m_InputBindings(inputBindings), m_OutputBindings(outputBindings) - {} - - static TfLiteStatus AddInputLayer(DelegateData& delegateData, - TfLiteContext* tfLiteContext, - const TfLiteIntArray* inputs, - std::vector<armnn::BindingPointInfo>& inputBindings); - - static TfLiteStatus AddOutputLayer(DelegateData& delegateData, - TfLiteContext* tfLiteContext, - const TfLiteIntArray* outputs, - std::vector<armnn::BindingPointInfo>& outputBindings); - - - /// The Network Id - armnn::NetworkId m_NetworkId; - /// ArmNN Rumtime - armnn::IRuntime* m_Runtime; - - // Binding information for inputs and outputs - std::vector<armnn::BindingPointInfo> m_InputBindings; - std::vector<armnn::BindingPointInfo> m_OutputBindings; - -}; - -} // armnnDelegate namespace - - +#include <armnn/delegate/classic/include/armnn_delegate.hpp> +#pragma message("armnn/delegate/include/armnn_delegate.hpp has been deprecated, it is due for removal in"\ + " 24.02 release. Please use public interface ")
\ No newline at end of file |