• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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