blob: 8b66e774812ad8168344dc088b3dc78d9648f2b1 [file] [log] [blame]
telsoa015307bc12018-03-09 13:51:08 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// See LICENSE file in the project root for full license information.
4//
5
6#pragma once
7
8#include "HalInterfaces.h"
9#include "NeuralNetworks.h"
10#include <armnn/ArmNN.hpp>
11
12#include <memory>
13#include <set>
14#include <string>
15
16namespace armnn_driver
17{
18
19class DriverOptions
20{
21public:
22 DriverOptions(armnn::Compute computeDevice);
23 DriverOptions(int argc, char** argv);
24 DriverOptions(DriverOptions&& other) = default;
25
26 armnn::Compute GetComputeDevice() const { return m_ComputeDevice; }
27 bool IsVerboseLoggingEnabled() const { return m_VerboseLogging; }
28 const std::string& GetRequestInputsAndOutputsDumpDir() const { return m_RequestInputsAndOutputsDumpDir; }
29 bool UseAndroidNnCpuExecutor() const { return m_UseAndroidNnCpuExecutor; }
30 const std::set<unsigned int>& GetForcedUnsupportedOperations() const { return m_ForcedUnsupportedOperations; }
31 const std::string& GetClTunedParametersFile() const { return m_ClTunedParametersFile; }
32 armnn::IClTunedParameters::Mode GetClTunedParametersMode() const { return m_ClTunedParametersMode; }
33
34private:
35 armnn::Compute m_ComputeDevice;
36 bool m_VerboseLogging;
37 bool m_UseAndroidNnCpuExecutor;
38 std::string m_RequestInputsAndOutputsDumpDir;
39 std::set<unsigned int> m_ForcedUnsupportedOperations;
40 std::string m_ClTunedParametersFile;
41 armnn::IClTunedParameters::Mode m_ClTunedParametersMode;
42};
43
44class ArmnnDriver : public IDevice {
45public:
46 ArmnnDriver(DriverOptions options);
47 virtual ~ArmnnDriver() {}
48 virtual Return<void> getCapabilities(getCapabilities_cb _hidl_cb) override;
49 virtual Return<void> getSupportedOperations(const Model &model,
50 getSupportedOperations_cb _hidl_cb) override;
51 virtual Return<ErrorStatus> prepareModel(const Model &model,
52 const android::sp<IPreparedModelCallback>& callback);
53 virtual Return<DeviceStatus> getStatus() override;
54
55private:
56 armnn::IRuntimePtr m_Runtime;
57 armnn::IClTunedParametersPtr m_ClTunedParameters;
58 DriverOptions m_Options;
59};
60
61}