ArmNN
 22.05.01
RefLayerSupportTests.cpp File Reference

Go to the source code of this file.

Functions

 TEST_SUITE ("RefLayerSupported")
 

Function Documentation

◆ TEST_SUITE()

TEST_SUITE ( "RefLayerSupported"  )

Definition at line 31 of file RefLayerSupportTests.cpp.

References armnn::BFloat16, armnn::Boolean, armnn::Float16, armnn::Float32, RefLayerSupport::IsAdditionSupported(), armnn::QAsymmS8, armnn::QAsymmU8, armnn::QSymmS16, and armnn::QSymmS8.

32 {
33 TEST_CASE("IsLayerSupportedLayerTypeMatches")
34 {
35  LayerTypeMatchesTest();
36 }
37 
38 TEST_CASE("IsLayerSupportedReferenceAddition")
39 {
40  armnn::TensorShape shape0 = {1,1,3,4};
41  armnn::TensorShape shape1 = {4};
42  armnn::TensorShape outShape = {1,1,3,4};
46 
47  armnn::RefLayerSupport supportChecker;
48  std::string reasonNotSupported;
49  CHECK(supportChecker.IsAdditionSupported(in0, in1, out, reasonNotSupported));
50 }
51 
52 TEST_CASE("IsLayerSupportedBFloat16Reference")
53 {
55  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::BFloat16>(&factory);
56 }
57 
58 TEST_CASE("IsLayerSupportedFloat16Reference")
59 {
61  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float16>(&factory);
62 }
63 
64 TEST_CASE("IsLayerSupportedFloat32Reference")
65 {
67  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::Float32>(&factory);
68 }
69 
70 TEST_CASE("IsLayerSupportedUint8Reference")
71 {
73  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
74 }
75 
76 TEST_CASE("IsLayerSupportedInt8Reference")
77 {
79  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
80 }
81 
82 TEST_CASE("IsLayerSupportedInt16Reference")
83 {
85  IsLayerSupportedTests<armnn::RefWorkloadFactory, armnn::DataType::QSymmS16>(&factory);
86 }
87 
88 TEST_CASE("IsConvertFp16ToFp32SupportedReference")
89 {
90  std::string reasonIfUnsupported;
91 
92  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
94 
95  CHECK(result);
96 }
97 
98 TEST_CASE("IsConvertFp16ToFp32SupportedFp32InputReference")
99 {
100  std::string reasonIfUnsupported;
101 
102  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
103  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
104 
105  CHECK(!result);
106  CHECK_EQ(reasonIfUnsupported, "Layer is not supported with float32 data type input");
107 }
108 
109 TEST_CASE("IsConvertFp16ToFp32SupportedFp16OutputReference")
110 {
111  std::string reasonIfUnsupported;
112 
113  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
114  armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
115 
116  CHECK(!result);
117  CHECK_EQ(reasonIfUnsupported, "Layer is not supported with float16 data type output");
118 }
119 
120 TEST_CASE("IsConvertBf16ToFp32SupportedReference")
121 {
122  std::string reasonIfUnsupported;
123 
124  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertBf16ToFp32Layer,
126 
127  CHECK(result);
128 }
129 
130 TEST_CASE("IsConvertBf16ToFp32SupportedFp32InputReference")
131 {
132  std::string reasonIfUnsupported;
133 
134  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertBf16ToFp32Layer,
135  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
136 
137  CHECK(!result);
138  CHECK_EQ(reasonIfUnsupported, "Reference for ConvertBf16ToFp32 layer: input type not supported\n");
139 }
140 
141 TEST_CASE("IsConvertBf16ToFp32SupportedBf16OutputReference")
142 {
143  std::string reasonIfUnsupported;
144 
145  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertBf16ToFp32Layer,
146  armnn::DataType::BFloat16, armnn::DataType::BFloat16>(reasonIfUnsupported);
147 
148  CHECK(!result);
149  CHECK_EQ(reasonIfUnsupported, "Reference for ConvertBf16ToFp32 layer: output type not supported\n");
150 }
151 
152 TEST_CASE("IsConvertFp32ToBf16SupportedReference")
153 {
154  std::string reasonIfUnsupported;
155 
156  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToBf16Layer,
158 
159  CHECK(result);
160 }
161 
162 TEST_CASE("IsConvertFp32ToBf16SupportedBf16InputReference")
163 {
164  std::string reasonIfUnsupported;
165 
166  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToBf16Layer,
167  armnn::DataType::BFloat16, armnn::DataType::BFloat16>(reasonIfUnsupported);
168 
169  CHECK(!result);
170  CHECK_EQ(reasonIfUnsupported, "Reference for ConvertFp32ToBf16 layer: input type not supported\n");
171 }
172 
173 TEST_CASE("IsConvertFp32ToBf16SupportedFp32OutputReference")
174 {
175  std::string reasonIfUnsupported;
176 
177  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToBf16Layer,
178  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
179 
180  CHECK(!result);
181  CHECK_EQ(reasonIfUnsupported, "Reference for ConvertFp32ToBf16 layer: output type not supported\n");
182 }
183 
184 TEST_CASE("IsConvertFp32ToFp16SupportedReference")
185 {
186  std::string reasonIfUnsupported;
187 
188  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
189  armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
190 
191  CHECK(result);
192 }
193 
194 TEST_CASE("IsConvertFp32ToFp16SupportedFp16InputReference")
195 {
196  std::string reasonIfUnsupported;
197 
198  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
199  armnn::DataType::Float16, armnn::DataType::Float16>(reasonIfUnsupported);
200 
201  CHECK(!result);
202  CHECK_EQ(reasonIfUnsupported, "Layer is not supported with float16 data type input");
203 }
204 
205 TEST_CASE("IsConvertFp32ToFp16SupportedFp32OutputReference")
206 {
207  std::string reasonIfUnsupported;
208 
209  bool result = IsConvertLayerSupportedTests<armnn::RefWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
210  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
211 
212  CHECK(!result);
213  CHECK_EQ(reasonIfUnsupported, "Layer is not supported with float32 data type output");
214 }
215 
216 TEST_CASE("IsLayerSupportedMeanDimensionsReference")
217 {
218  std::string reasonIfUnsupported;
219 
220  bool result = IsMeanLayerSupportedTests<armnn::RefWorkloadFactory,
221  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
222 
223  CHECK(result);
224 }
225 
226 TEST_CASE("IsLayerNotSupportedMeanDimensionsReference")
227 {
228  std::string reasonIfUnsupported;
229 
230  bool result = IsMeanLayerNotSupportedTests<armnn::RefWorkloadFactory,
231  armnn::DataType::Float32, armnn::DataType::Float32>(reasonIfUnsupported);
232 
233  CHECK(!result);
234 
235  CHECK(reasonIfUnsupported.find(
236  "Reference Mean: Expected 4 dimensions but got 2 dimensions instead, for the 'output' tensor.")
237  != std::string::npos);
238 }
239 
240 TEST_CASE("IsConstantSupportedRef")
241 {
242  std::string reasonIfUnsupported;
243 
244  bool result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
245  armnn::DataType::Float16>(reasonIfUnsupported);
246  CHECK(result);
247 
248  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
249  armnn::DataType::Float32>(reasonIfUnsupported);
250  CHECK(result);
251 
252  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
253  armnn::DataType::QAsymmU8>(reasonIfUnsupported);
254  CHECK(result);
255 
256  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
257  armnn::DataType::Boolean>(reasonIfUnsupported);
258  CHECK(!result);
259 
260  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
261  armnn::DataType::QSymmS16>(reasonIfUnsupported);
262  CHECK(result);
263 
264  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
265  armnn::DataType::QSymmS8>(reasonIfUnsupported);
266  CHECK(result);
267 
268  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
269  armnn::DataType::QAsymmS8>(reasonIfUnsupported);
270  CHECK(result);
271 
272  result = IsConstantLayerSupportedTests<armnn::RefWorkloadFactory,
273  armnn::DataType::BFloat16>(reasonIfUnsupported);
274  CHECK(result);
275 }
276 
277 }
This layer converts data type Float 16 to Float 32.
This layer converts data type BFloat16 to Float32.
bool IsAdditionSupported(const TensorInfo &input0, const TensorInfo &input1, const TensorInfo &output, Optional< std::string &> reasonIfUnsupported=EmptyOptional()) const override
This layer converts data type Float 32 to Float 16.
This layer converts data type Float32 to BFloat16.