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