blob: 1d1aaa75a492bc94b2684bd2a690cd8ca6dd813f [file] [log] [blame]
Matteo Martincigh79250ab2018-09-04 16:28:10 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beck93e48982018-09-05 13:05:09 +01003// SPDX-License-Identifier: MIT
Matteo Martincigh79250ab2018-09-04 16:28:10 +01004//
5
6#include "ArmnnDriverImpl.hpp"
7#include "../SystemPropertiesUtils.hpp"
8
9#include <log/log.h>
10
Matteo Martincigh79250ab2018-09-04 16:28:10 +010011namespace
12{
13
Kevin Mayec1e5b82020-02-26 17:00:39 +000014const char *g_Float32PerformanceExecTimeName = "ArmNN.float32Performance.execTime";
15const char *g_Float32PerformancePowerUsageName = "ArmNN.float32Performance.powerUsage";
16const char *g_Quantized8PerformanceExecTimeName = "ArmNN.quantized8Performance.execTime";
17const char *g_Quantized8PerformancePowerUsageName = "ArmNN.quantized8Performance.powerUsage";
18const char *g_RelaxedFloat32toFloat16PerformanceExecTime = "ArmNN.relaxedFloat32toFloat16Performance.execTime";
19const char *g_RelaxedFloat32toFloat16PerformancePowerUsageName = "ArmNN.relaxedFloat32toFloat16Performance.powerUsage";
Matteo Martincigh79250ab2018-09-04 16:28:10 +010020
21} // anonymous namespace
22
23namespace armnn_driver
24{
arovir01b0717b52018-09-05 17:03:25 +010025namespace hal_1_1
Matteo Martincigh79250ab2018-09-04 16:28:10 +010026{
27
arovir01b0717b52018-09-05 17:03:25 +010028Return<void> ArmnnDriverImpl::getCapabilities_1_1(const armnn::IRuntimePtr& runtime,
29 V1_1::IDevice::getCapabilities_1_1_cb cb)
Matteo Martincigh79250ab2018-09-04 16:28:10 +010030{
arovir01b0717b52018-09-05 17:03:25 +010031 ALOGV("hal_1_1::ArmnnDriverImpl::getCapabilities()");
Matteo Martincigh79250ab2018-09-04 16:28:10 +010032
arovir01b0717b52018-09-05 17:03:25 +010033 V1_1::Capabilities capabilities;
Matteo Martincigh79250ab2018-09-04 16:28:10 +010034 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
Kevin Mayec1e5b82020-02-26 17:00:39 +000051 capabilities.relaxedFloat32toFloat16Performance.powerUsage =
52 ParseSystemProperty(g_RelaxedFloat32toFloat16PerformancePowerUsageName, .1f);
53
54 cb(V1_0::ErrorStatus::NONE, capabilities);
Matteo Martincigh79250ab2018-09-04 16:28:10 +010055 }
56 else
57 {
Kevin Mayec1e5b82020-02-26 17:00:39 +000058 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;
Matteo Martincigh79250ab2018-09-04 16:28:10 +010064
Kevin Mayec1e5b82020-02-26 17:00:39 +000065 cb(V1_0::ErrorStatus::DEVICE_UNAVAILABLE, capabilities);
Matteo Martincigh79250ab2018-09-04 16:28:10 +010066 }
67
68 return Void();
69}
70
arovir01b0717b52018-09-05 17:03:25 +010071} // namespace hal_1_1
72} // namespace armnn_driver