xref: /aosp_15_r20/external/android-nn-driver/1.0/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 
19*3e777be0SXin Li } // anonymous namespace
20*3e777be0SXin Li 
21*3e777be0SXin Li namespace armnn_driver
22*3e777be0SXin Li {
23*3e777be0SXin Li namespace hal_1_0
24*3e777be0SXin Li {
25*3e777be0SXin Li 
getCapabilities(const armnn::IRuntimePtr & runtime,V1_0::IDevice::getCapabilities_cb cb)26*3e777be0SXin Li Return<void> ArmnnDriverImpl::getCapabilities(const armnn::IRuntimePtr& runtime,
27*3e777be0SXin Li                                               V1_0::IDevice::getCapabilities_cb cb)
28*3e777be0SXin Li {
29*3e777be0SXin Li     ALOGV("hal_1_0::ArmnnDriverImpl::getCapabilities()");
30*3e777be0SXin Li 
31*3e777be0SXin Li     V1_0::Capabilities capabilities;
32*3e777be0SXin Li     if (runtime)
33*3e777be0SXin Li     {
34*3e777be0SXin Li         capabilities.float32Performance.execTime =
35*3e777be0SXin Li             ParseSystemProperty(g_Float32PerformanceExecTimeName, .1f);
36*3e777be0SXin Li 
37*3e777be0SXin Li         capabilities.float32Performance.powerUsage =
38*3e777be0SXin Li             ParseSystemProperty(g_Float32PerformancePowerUsageName, .1f);
39*3e777be0SXin Li 
40*3e777be0SXin Li         capabilities.quantized8Performance.execTime =
41*3e777be0SXin Li             ParseSystemProperty(g_Quantized8PerformanceExecTimeName, .1f);
42*3e777be0SXin Li 
43*3e777be0SXin Li         capabilities.quantized8Performance.powerUsage =
44*3e777be0SXin Li             ParseSystemProperty(g_Quantized8PerformancePowerUsageName, .1f);
45*3e777be0SXin Li 
46*3e777be0SXin Li         cb(V1_0::ErrorStatus::NONE, capabilities);
47*3e777be0SXin Li     }
48*3e777be0SXin Li     else
49*3e777be0SXin Li     {
50*3e777be0SXin Li         capabilities.float32Performance.execTime      = 0;
51*3e777be0SXin Li         capabilities.float32Performance.powerUsage    = 0;
52*3e777be0SXin Li         capabilities.quantized8Performance.execTime   = 0;
53*3e777be0SXin Li         capabilities.quantized8Performance.powerUsage = 0;
54*3e777be0SXin Li 
55*3e777be0SXin Li         cb(V1_0::ErrorStatus::DEVICE_UNAVAILABLE, capabilities);
56*3e777be0SXin Li     }
57*3e777be0SXin Li 
58*3e777be0SXin Li     return Void();
59*3e777be0SXin Li }
60*3e777be0SXin Li 
61*3e777be0SXin Li } // namespace hal_1_0
62*3e777be0SXin Li } // namespace armnn_driver