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