ArmNN
 21.08
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 30 of file RefLayerSupportTests.cpp.

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

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