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