1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "ArmnnDriverImpl.hpp"
7 #include "../SystemPropertiesUtils.hpp"
8
9 #include <log/log.h>
10
11 namespace
12 {
13
14 const char *g_Float32PerformanceExecTimeName = "ArmNN.float32Performance.execTime";
15 const char *g_Float32PerformancePowerUsageName = "ArmNN.float32Performance.powerUsage";
16 const char *g_Quantized8PerformanceExecTimeName = "ArmNN.quantized8Performance.execTime";
17 const char *g_Quantized8PerformancePowerUsageName = "ArmNN.quantized8Performance.powerUsage";
18 const char *g_RelaxedFloat32toFloat16PerformanceExecTime = "ArmNN.relaxedFloat32toFloat16Performance.execTime";
19 const char *g_RelaxedFloat32toFloat16PerformancePowerUsageName = "ArmNN.relaxedFloat32toFloat16Performance.powerUsage";
20
21 } // anonymous namespace
22
23 namespace armnn_driver
24 {
25 namespace hal_1_1
26 {
27
getCapabilities_1_1(const armnn::IRuntimePtr & runtime,V1_1::IDevice::getCapabilities_1_1_cb cb)28 Return<void> ArmnnDriverImpl::getCapabilities_1_1(const armnn::IRuntimePtr& runtime,
29 V1_1::IDevice::getCapabilities_1_1_cb cb)
30 {
31 ALOGV("hal_1_1::ArmnnDriverImpl::getCapabilities()");
32
33 V1_1::Capabilities capabilities;
34 if (runtime)
35 {
36 capabilities.float32Performance.execTime =
37 ParseSystemProperty(g_Float32PerformanceExecTimeName, .1f);
38
39 capabilities.float32Performance.powerUsage =
40 ParseSystemProperty(g_Float32PerformancePowerUsageName, .1f);
41
42 capabilities.quantized8Performance.execTime =
43 ParseSystemProperty(g_Quantized8PerformanceExecTimeName, .1f);
44
45 capabilities.quantized8Performance.powerUsage =
46 ParseSystemProperty(g_Quantized8PerformancePowerUsageName, .1f);
47
48 capabilities.relaxedFloat32toFloat16Performance.execTime =
49 ParseSystemProperty(g_RelaxedFloat32toFloat16PerformanceExecTime, .1f);
50
51 capabilities.relaxedFloat32toFloat16Performance.powerUsage =
52 ParseSystemProperty(g_RelaxedFloat32toFloat16PerformancePowerUsageName, .1f);
53
54 cb(V1_0::ErrorStatus::NONE, capabilities);
55 }
56 else
57 {
58 capabilities.float32Performance.execTime = 0;
59 capabilities.float32Performance.powerUsage = 0;
60 capabilities.quantized8Performance.execTime = 0;
61 capabilities.quantized8Performance.powerUsage = 0;
62 capabilities.relaxedFloat32toFloat16Performance.execTime = 0;
63 capabilities.relaxedFloat32toFloat16Performance.powerUsage = 0;
64
65 cb(V1_0::ErrorStatus::DEVICE_UNAVAILABLE, capabilities);
66 }
67
68 return Void();
69 }
70
71 } // namespace hal_1_1
72 } // namespace armnn_driver