xref: /aosp_15_r20/external/android-nn-driver/1.1/ArmnnDriverImpl.cpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
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