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