// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #pragma once #include "HalInterfaces.h" #include "NeuralNetworks.h" #include #include #include #include namespace armnn_driver { class DriverOptions { public: DriverOptions(armnn::Compute computeDevice); DriverOptions(int argc, char** argv); DriverOptions(DriverOptions&& other) = default; armnn::Compute GetComputeDevice() const { return m_ComputeDevice; } bool IsVerboseLoggingEnabled() const { return m_VerboseLogging; } const std::string& GetRequestInputsAndOutputsDumpDir() const { return m_RequestInputsAndOutputsDumpDir; } bool UseAndroidNnCpuExecutor() const { return m_UseAndroidNnCpuExecutor; } const std::set& GetForcedUnsupportedOperations() const { return m_ForcedUnsupportedOperations; } const std::string& GetClTunedParametersFile() const { return m_ClTunedParametersFile; } armnn::IClTunedParameters::Mode GetClTunedParametersMode() const { return m_ClTunedParametersMode; } private: armnn::Compute m_ComputeDevice; bool m_VerboseLogging; bool m_UseAndroidNnCpuExecutor; std::string m_RequestInputsAndOutputsDumpDir; std::set m_ForcedUnsupportedOperations; std::string m_ClTunedParametersFile; armnn::IClTunedParameters::Mode m_ClTunedParametersMode; }; class ArmnnDriver : public IDevice { public: ArmnnDriver(DriverOptions options); virtual ~ArmnnDriver() {} virtual Return getCapabilities(getCapabilities_cb _hidl_cb) override; virtual Return getSupportedOperations(const Model &model, getSupportedOperations_cb _hidl_cb) override; virtual Return prepareModel(const Model &model, const android::sp& callback); virtual Return getStatus() override; private: armnn::IRuntimePtr m_Runtime; armnn::IClTunedParametersPtr m_ClTunedParameters; DriverOptions m_Options; }; }