blob: e8dc3bfb40d00d047e0943d5fdd52e992bfa4dac [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
surmeh01deb3bdb2018-07-05 12:06:04 +010016// For Android O, explicitly declare the V1_0 HAL namespace to shorten type declarations,
17// as the namespace is not defined in HalInterfaces.h.
18namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
19
telsoa015307bc12018-03-09 13:51:08 +000020namespace armnn_driver
21{
22
23class DriverOptions
24{
25public:
26 DriverOptions(armnn::Compute computeDevice);
27 DriverOptions(int argc, char** argv);
28 DriverOptions(DriverOptions&& other) = default;
29
30 armnn::Compute GetComputeDevice() const { return m_ComputeDevice; }
31 bool IsVerboseLoggingEnabled() const { return m_VerboseLogging; }
32 const std::string& GetRequestInputsAndOutputsDumpDir() const { return m_RequestInputsAndOutputsDumpDir; }
33 bool UseAndroidNnCpuExecutor() const { return m_UseAndroidNnCpuExecutor; }
34 const std::set<unsigned int>& GetForcedUnsupportedOperations() const { return m_ForcedUnsupportedOperations; }
35 const std::string& GetClTunedParametersFile() const { return m_ClTunedParametersFile; }
36 armnn::IClTunedParameters::Mode GetClTunedParametersMode() const { return m_ClTunedParametersMode; }
37
38private:
39 armnn::Compute m_ComputeDevice;
40 bool m_VerboseLogging;
41 bool m_UseAndroidNnCpuExecutor;
42 std::string m_RequestInputsAndOutputsDumpDir;
43 std::set<unsigned int> m_ForcedUnsupportedOperations;
44 std::string m_ClTunedParametersFile;
45 armnn::IClTunedParameters::Mode m_ClTunedParametersMode;
46};
47
surmeh01deb3bdb2018-07-05 12:06:04 +010048class ArmnnDriver : public V1_0::IDevice {
telsoa015307bc12018-03-09 13:51:08 +000049public:
50 ArmnnDriver(DriverOptions options);
51 virtual ~ArmnnDriver() {}
surmeh01deb3bdb2018-07-05 12:06:04 +010052 virtual Return<void> getCapabilities(V1_0::IDevice::getCapabilities_cb _hidl_cb) override;
53 virtual Return<void> getSupportedOperations(const V1_0::Model &model,
54 V1_0::IDevice::getSupportedOperations_cb _hidl_cb) override;
55 virtual Return<ErrorStatus> prepareModel(const V1_0::Model &model,
telsoa015307bc12018-03-09 13:51:08 +000056 const android::sp<IPreparedModelCallback>& callback);
57 virtual Return<DeviceStatus> getStatus() override;
58
59private:
60 armnn::IRuntimePtr m_Runtime;
61 armnn::IClTunedParametersPtr m_ClTunedParameters;
62 DriverOptions m_Options;
63};
64
65}