xref: /aosp_15_r20/external/armnn/shim/sl/canonical/ArmnnDriverImpl.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include "DriverOptions.hpp"
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #include <armnn/ArmNN.hpp>
11*89c4ff92SAndroid Build Coastguard Worker 
12*89c4ff92SAndroid Build Coastguard Worker #include <nnapi/IPreparedModel.h>
13*89c4ff92SAndroid Build Coastguard Worker #include <nnapi/Result.h>
14*89c4ff92SAndroid Build Coastguard Worker #include <nnapi/TypeUtils.h>
15*89c4ff92SAndroid Build Coastguard Worker #include <nnapi/Types.h>
16*89c4ff92SAndroid Build Coastguard Worker #include <nnapi/Validation.h>
17*89c4ff92SAndroid Build Coastguard Worker 
18*89c4ff92SAndroid Build Coastguard Worker using namespace android::nn;
19*89c4ff92SAndroid Build Coastguard Worker 
20*89c4ff92SAndroid Build Coastguard Worker namespace armnn_driver
21*89c4ff92SAndroid Build Coastguard Worker {
22*89c4ff92SAndroid Build Coastguard Worker 
23*89c4ff92SAndroid Build Coastguard Worker class ArmnnDriverImpl
24*89c4ff92SAndroid Build Coastguard Worker {
25*89c4ff92SAndroid Build Coastguard Worker public:
26*89c4ff92SAndroid Build Coastguard Worker     static GeneralResult<SharedPreparedModel> PrepareArmnnModel(
27*89c4ff92SAndroid Build Coastguard Worker         const armnn::IRuntimePtr& runtime,
28*89c4ff92SAndroid Build Coastguard Worker         const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
29*89c4ff92SAndroid Build Coastguard Worker         const DriverOptions& options,
30*89c4ff92SAndroid Build Coastguard Worker         const Model& model,
31*89c4ff92SAndroid Build Coastguard Worker         const std::vector<SharedHandle>& modelCacheHandle,
32*89c4ff92SAndroid Build Coastguard Worker         const std::vector<SharedHandle>& dataCacheHandle,
33*89c4ff92SAndroid Build Coastguard Worker         const CacheToken& token,
34*89c4ff92SAndroid Build Coastguard Worker         bool float32ToFloat16 = false,
35*89c4ff92SAndroid Build Coastguard Worker         Priority priority = Priority::MEDIUM);
36*89c4ff92SAndroid Build Coastguard Worker 
37*89c4ff92SAndroid Build Coastguard Worker     static GeneralResult<SharedPreparedModel> PrepareArmnnModelFromCache(
38*89c4ff92SAndroid Build Coastguard Worker         const armnn::IRuntimePtr& runtime,
39*89c4ff92SAndroid Build Coastguard Worker         const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
40*89c4ff92SAndroid Build Coastguard Worker         const DriverOptions& options,
41*89c4ff92SAndroid Build Coastguard Worker         const std::vector<SharedHandle>& modelCacheHandle,
42*89c4ff92SAndroid Build Coastguard Worker         const std::vector<SharedHandle>& dataCacheHandle,
43*89c4ff92SAndroid Build Coastguard Worker         const CacheToken& token,
44*89c4ff92SAndroid Build Coastguard Worker         bool float32ToFloat16 = false);
45*89c4ff92SAndroid Build Coastguard Worker 
46*89c4ff92SAndroid Build Coastguard Worker     static const Capabilities& GetCapabilities(const armnn::IRuntimePtr& runtime);
47*89c4ff92SAndroid Build Coastguard Worker 
48*89c4ff92SAndroid Build Coastguard Worker private:
49*89c4ff92SAndroid Build Coastguard Worker     static bool ValidateSharedHandle(const SharedHandle& sharedHandle);
50*89c4ff92SAndroid Build Coastguard Worker     static bool ValidateDataCacheHandle(const std::vector<SharedHandle>& dataCacheHandle, const size_t dataSize);
51*89c4ff92SAndroid Build Coastguard Worker };
52*89c4ff92SAndroid Build Coastguard Worker 
53*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn_driver