5 #include <doctest/doctest.h> 20 TEST_CASE(
"DataTypeSize")
28 TEST_CASE(
"PermuteDescriptorWithTooManyMappings")
33 TEST_CASE(
"PermuteDescriptorWithInvalidMappings1d")
38 TEST_CASE(
"PermuteDescriptorWithInvalidMappings2d")
43 TEST_CASE(
"PermuteDescriptorWithInvalidMappings3d")
48 TEST_CASE(
"PermuteDescriptorWithInvalidMappings4d")
53 TEST_CASE(
"PermuteDescriptorWithInvalidMappings5d")
58 TEST_CASE(
"PermuteDescriptorWithDuplicatedMappings")
65 using namespace half_float::literal;
73 CHECK_EQ(
sizeof(c), 2);
76 CHECK(std::is_floating_point<armnn::Half>::value);
80 constexpr
bool isHalfType = std::is_same<armnn::Half, ResolvedType>::value;
90 TEST_CASE(
"BFloatType")
98 CHECK_EQ(
sizeof(a), 2);
100 CHECK_EQ(a.
Val(), v);
102 CHECK_EQ(zero, 0.0f);
105 float infFloat = std::numeric_limits<float>::infinity();
110 float nan = std::numeric_limits<float>::quiet_NaN();
116 constexpr
bool isBFloat16Type = std::is_same<armnn::BFloat16, ResolvedType>::value;
117 CHECK(isBFloat16Type);
126 TEST_CASE(
"Float32ToBFloat16Test")
130 CHECK_EQ(roundDown0.
Val(), 0x7F00);
133 CHECK_EQ(roundDown1.Val(), 0x0001);
136 CHECK_EQ(roundDown2.Val(), 0x0001);
139 CHECK_EQ(roundUp.Val(), 0xC002);
142 CHECK_EQ(roundUp1.Val(), 0x0681);
148 CHECK_EQ(maxNeg.
Val(), 0xFF80);
151 CHECK_EQ(minPositive.Val(), 0x0080);
154 CHECK_EQ(minNeg.Val(), 0x8080);
157 TEST_CASE(
"BFloat16ToFloat32Test")
162 CHECK_EQ(bf1.ToFloat32(), -5.525308E-25f);
164 CHECK_EQ(bf2.ToFloat32(), -2.0625f);
167 CHECK_EQ(bf3.
ToFloat32(), 3.3895314E38f);
174 TEST_CASE(
"GraphTopologicalSortSimpleTest")
176 std::map<int, std::vector<int>> graph;
185 auto getNodeInputs = [graph](
int node) -> std::vector<int>
187 return graph.find(node)->second;
190 std::vector<int> targetNodes = {0, 1};
192 std::vector<int> output;
193 bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output);
195 CHECK(sortCompleted);
197 std::vector<int> correctResult = {5, 4, 2, 0, 3, 1};
198 CHECK(std::equal(output.begin(), output.end(), correctResult.begin(), correctResult.end()));
201 TEST_CASE(
"GraphTopologicalSortVariantTest")
203 std::map<int, std::vector<int>> graph;
213 auto getNodeInputs = [graph](
int node) -> std::vector<int>
215 return graph.find(node)->second;
218 std::vector<int> targetNodes = {0, 1};
220 std::vector<int> output;
221 bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output);
223 CHECK(sortCompleted);
225 std::vector<int> correctResult = {6, 5, 3, 4, 2, 0, 1};
226 CHECK(std::equal(output.begin(), output.end(), correctResult.begin(), correctResult.end()));
229 TEST_CASE(
"CyclicalGraphTopologicalSortTest")
231 std::map<int, std::vector<int>> graph;
237 auto getNodeInputs = [graph](
int node) -> std::vector<int>
239 return graph.find(node)->second;
242 std::vector<int> targetNodes = {0};
244 std::vector<int> output;
245 bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output);
247 CHECK(!sortCompleted);
250 TEST_CASE(
"PermuteQuantizationDim")
252 std::vector<float> scales {1.0f, 1.0f};
256 CHECK(perChannelInfo.GetQuantizationDim().value() == 1U);
263 CHECK(permutedPerChannel.GetQuantizationDim().value() == 3U);
266 std::vector<float> scale {1.0f};
269 CHECK(permuted.GetQuantizationDim().value() == 3U);
272 TEST_CASE(
"EmptyPermuteVectorIndexOutOfBounds")
278 TEST_CASE(
"PermuteDescriptorIndexOutOfBounds")
283 CHECK(desc.m_DimMappings[0] == 1u);
286 TEST_CASE(
"TransposeDescriptorIndexOutOfBounds")
291 CHECK(desc.m_DimMappings[2] == 0u);
294 TEST_CASE(
"PermuteVectorIterator")
303 CHECK(zeroPVector.begin() == zeroPVector.end());
307 unsigned int sum = 0;
308 for (
unsigned int it : fourPVector)
314 unsigned int iterations = 0;
315 auto itr = fourPVector.begin();
316 while(itr != fourPVector.end())
321 CHECK(iterations == 4);
326 itr = twoPVector.
begin();
327 while(itr != twoPVector.end())
332 CHECK(iterations == 2);
335 #if defined(ARMNNREF_ENABLED) 336 TEST_CASE(
"LayerSupportHandle")
340 std::string reasonIfUnsupported;
342 CHECK_EQ(layerSupportObject.IsInputSupported(input, reasonIfUnsupported),
true);
344 CHECK(layerSupportObject.IsBackendRegistered());
typename ResolveTypeImpl< DT >::Type ResolveType
constexpr const char * GetDataTypeName(DataType dataType)
static BFloat16 Float32ToBFloat16(const float v)
ConstIterator begin() const
A TransposeDescriptor for the TransposeLayer.
LayerSupportHandle GetILayerSupportByBackendId(const armnn::BackendId &backend)
Convenience function to retrieve the ILayerSupportHandle for a backend.
armnn::TensorShape Permuted(const armnn::TensorShape &srcShape, const armnn::PermutationVector &mappings)
constexpr unsigned int GetDataTypeSize(DataType dataType)
A PermuteDescriptor for the PermuteLayer.