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