1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "ClBackendModelContext.hpp"
7
8 namespace
9 {
10
ParseBool(const armnn::BackendOptions::Var & value,bool defaultValue)11 bool ParseBool(const armnn::BackendOptions::Var& value, bool defaultValue)
12 {
13 if (value.IsBool())
14 {
15 return value.AsBool();
16 }
17 return defaultValue;
18 }
19
ParseFile(const armnn::BackendOptions::Var & value,std::string defaultValue)20 std::string ParseFile(const armnn::BackendOptions::Var& value, std::string defaultValue)
21 {
22 if (value.IsString())
23 {
24 return value.AsString();
25 }
26 return defaultValue;
27 }
28
29 } // namespace anonymous
30
31 namespace armnn
32 {
33
ClBackendModelContext(const ModelOptions & modelOptions)34 ClBackendModelContext::ClBackendModelContext(const ModelOptions& modelOptions)
35 : m_CachedNetworkFilePath(""), m_IsFastMathEnabled(false), m_SaveCachedNetwork(false), m_CachedFileDescriptor(-1)
36 {
37 if (!modelOptions.empty())
38 {
39 ParseOptions(modelOptions, "GpuAcc", [&](std::string name, const BackendOptions::Var& value)
40 {
41 if (name == "FastMathEnabled")
42 {
43 m_IsFastMathEnabled |= ParseBool(value, false);
44 }
45 if (name == "SaveCachedNetwork")
46 {
47 m_SaveCachedNetwork |= ParseBool(value, false);
48 }
49 if (name == "CachedNetworkFilePath")
50 {
51 m_CachedNetworkFilePath = ParseFile(value, "");
52 }
53 if (name == "CachedFileDescriptor")
54 {
55 m_CachedFileDescriptor = armnn::ParseIntBackendOption(value, -1);
56 }
57 });
58 }
59 }
60
GetCachedNetworkFilePath() const61 std::string ClBackendModelContext::GetCachedNetworkFilePath() const
62 {
63 return m_CachedNetworkFilePath;
64 }
65
IsFastMathEnabled() const66 bool ClBackendModelContext::IsFastMathEnabled() const
67 {
68 return m_IsFastMathEnabled;
69 }
70
SaveCachedNetwork() const71 bool ClBackendModelContext::SaveCachedNetwork() const
72 {
73 return m_SaveCachedNetwork;
74 }
75
GetCachedFileDescriptor() const76 int ClBackendModelContext::GetCachedFileDescriptor() const
77 {
78 return m_CachedFileDescriptor;
79 }
80
81 } // namespace armnn