aboutsummaryrefslogtreecommitdiff
path: root/shim/sl/canonical/ArmnnDriverImpl.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'shim/sl/canonical/ArmnnDriverImpl.hpp')
-rw-r--r--shim/sl/canonical/ArmnnDriverImpl.hpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/shim/sl/canonical/ArmnnDriverImpl.hpp b/shim/sl/canonical/ArmnnDriverImpl.hpp
new file mode 100644
index 0000000000..836bf469cc
--- /dev/null
+++ b/shim/sl/canonical/ArmnnDriverImpl.hpp
@@ -0,0 +1,59 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include "DriverOptions.hpp"
+
+#include <armnn/ArmNN.hpp>
+
+#include <nnapi/IPreparedModel.h>
+#include <nnapi/Result.h>
+#include <nnapi/TypeUtils.h>
+#include <nnapi/Types.h>
+#include <nnapi/Validation.h>
+
+using namespace android::nn;
+
+namespace armnn_driver
+{
+
+class ArmnnDriverImpl
+{
+public:
+ static GeneralResult<SharedPreparedModel> PrepareArmnnModel(
+ const armnn::IRuntimePtr& runtime,
+ const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
+ const DriverOptions& options,
+ const Model& model,
+ const std::vector<SharedHandle>& modelCacheHandle,
+ const std::vector<SharedHandle>& dataCacheHandle,
+ const CacheToken& token,
+ bool float32ToFloat16 = false,
+ Priority priority = Priority::MEDIUM);
+
+ static GeneralResult<SharedPreparedModel> PrepareArmnnModelFromCache(
+ const armnn::IRuntimePtr& runtime,
+ const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
+ const DriverOptions& options,
+ const std::vector<SharedHandle>& modelCacheHandle,
+ const std::vector<SharedHandle>& dataCacheHandle,
+ const CacheToken& token,
+ bool float32ToFloat16 = false);
+
+ static const Capabilities& GetCapabilities(const armnn::IRuntimePtr& runtime);
+
+ static std::vector<armnn::NetworkId>& GetLoadedNetworks();
+
+ static void ClearNetworks();
+
+private:
+ static bool ValidateSharedHandle(const SharedHandle& sharedHandle);
+ static bool ValidateDataCacheHandle(const std::vector<SharedHandle>& dataCacheHandle, const size_t dataSize);
+
+ static std::vector<armnn::NetworkId> m_NetworkIDs;
+};
+
+} // namespace armnn_driver \ No newline at end of file