ArmNN
 21.02
ClLayerSupportTests.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
10 #include <layers/MeanLayer.hpp>
11 #include <test/TensorHelpers.hpp>
12 
14 #include <cl/ClWorkloadFactory.hpp>
18 
19 #include <boost/test/unit_test.hpp>
20 
21 #include <string>
22 
23 BOOST_AUTO_TEST_SUITE(ClLayerSupport)
24 
26 {
27  armnn::ClWorkloadFactory factory =
28  ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
29  IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
30 }
31 
33 {
34  armnn::ClWorkloadFactory factory =
35  ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
36  IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
37 }
38 
40 {
41  armnn::ClWorkloadFactory factory =
42  ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
43  IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
44 }
45 
47 {
48  armnn::ClWorkloadFactory factory =
49  ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
50  IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmS8>(&factory);
51 }
52 
54 {
55  armnn::ClWorkloadFactory factory =
56  ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
57  IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
58 }
59 
60 BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture)
61 {
62  std::string reasonIfUnsupported;
63 
64  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
66 
67  BOOST_CHECK(result);
68 }
69 
70 BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl, ClContextControlFixture)
71 {
72  std::string reasonIfUnsupported;
73 
74  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
75  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
76 
77  BOOST_CHECK(!result);
78  BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float16");
79 }
80 
81 BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl, ClContextControlFixture)
82 {
83  std::string reasonIfUnsupported;
84 
85  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
86  armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
87 
88  BOOST_CHECK(!result);
89  BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float32");
90 }
91 
92 BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture)
93 {
94  std::string reasonIfUnsupported;
95 
96  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
98 
99  BOOST_CHECK(result);
100 }
101 
102 BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl, ClContextControlFixture)
103 {
104  std::string reasonIfUnsupported;
105 
106  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
107  armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
108 
109  BOOST_CHECK(!result);
110  BOOST_CHECK_EQUAL(reasonIfUnsupported, "Input should be Float32");
111 }
112 
113 BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl, ClContextControlFixture)
114 {
115  std::string reasonIfUnsupported;
116 
117  bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
118  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
119 
120  BOOST_CHECK(!result);
121  BOOST_CHECK_EQUAL(reasonIfUnsupported, "Output should be Float16");
122 }
123 
125 {
126  std::string reasonIfUnsupported;
127 
128  bool result = IsLogicalBinaryLayerSupportedTests<armnn::ClWorkloadFactory,
129  armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
130 
131  BOOST_CHECK(result);
132 }
133 
134 BOOST_FIXTURE_TEST_CASE(IsLogicalBinaryBroadcastSupportedCl, ClContextControlFixture)
135 {
136  std::string reasonIfUnsupported;
137 
138  bool result = IsLogicalBinaryLayerBroadcastSupportedTests<armnn::ClWorkloadFactory,
139  armnn::DataType::Boolean, armnn::DataType::Boolean>(reasonIfUnsupported);
140 
141  BOOST_CHECK(result);
142 }
143 
145 {
146  std::string reasonIfUnsupported;
147 
148  bool result = IsMeanLayerSupportedTests<armnn::ClWorkloadFactory,
149  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
150 
151  BOOST_CHECK(result);
152 }
153 
154 BOOST_AUTO_TEST_CASE(IsConstantSupportedCl)
155 {
156  std::string reasonIfUnsupported;
157 
158  bool result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
159  armnn::DataType::Float16>(reasonIfUnsupported);
160  BOOST_CHECK(result);
161 
162  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
163  armnn::DataType::Float32>(reasonIfUnsupported);
164  BOOST_CHECK(result);
165 
166  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
167  armnn::DataType::QAsymmU8>(reasonIfUnsupported);
168  BOOST_CHECK(result);
169 
170  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
171  armnn::DataType::Boolean>(reasonIfUnsupported);
172  BOOST_CHECK(!result);
173 
174  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
175  armnn::DataType::QSymmS16>(reasonIfUnsupported);
176  BOOST_CHECK(result);
177 
178  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
179  armnn::DataType::QSymmS8>(reasonIfUnsupported);
180  BOOST_CHECK(result);
181 
182  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
183  armnn::DataType::QAsymmS8>(reasonIfUnsupported);
184  BOOST_CHECK(result);
185 
186  result = IsConstantLayerSupportedTests<armnn::ClWorkloadFactory,
187  armnn::DataType::BFloat16>(reasonIfUnsupported);
188  BOOST_CHECK(!result);
189 }
190 
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
BOOST_AUTO_TEST_CASE(IsConstantSupportedCl)
This layer converts data type Float 16 to Float 32.
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture)
This layer converts data type Float 32 to Float 16.
BOOST_AUTO_TEST_SUITE_END()