• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ClWorkloadFactoryHelper.hpp"
7 
8 #include <layers/ConvertFp16ToFp32Layer.hpp>
9 #include <layers/ConvertFp32ToFp16Layer.hpp>
10 #include <layers/MeanLayer.hpp>
11 #include <test/TensorHelpers.hpp>
12 
13 #include <backendsCommon/CpuTensorHandle.hpp>
14 #include <cl/ClWorkloadFactory.hpp>
15 #include <cl/test/ClContextControlFixture.hpp>
16 #include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
17 #include <backendsCommon/test/LayerTests.hpp>
18 
19 #include <boost/test/unit_test.hpp>
20 
21 #include <string>
22 
23 BOOST_AUTO_TEST_SUITE(ClLayerSupport)
24 
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl,ClContextControlFixture)25 BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat16Cl, ClContextControlFixture)
26 {
27     armnn::ClWorkloadFactory factory =
28         ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
29     IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float16>(&factory);
30 }
31 
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl,ClContextControlFixture)32 BOOST_FIXTURE_TEST_CASE(IsLayerSupportedFloat32Cl, ClContextControlFixture)
33 {
34     armnn::ClWorkloadFactory factory =
35         ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
36     IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::Float32>(&factory);
37 }
38 
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmU8Cl,ClContextControlFixture)39 BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmU8Cl, ClContextControlFixture)
40 {
41     armnn::ClWorkloadFactory factory =
42         ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
43     IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmU8>(&factory);
44 }
45 
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmS8Cl,ClContextControlFixture)46 BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQAsymmS8Cl, ClContextControlFixture)
47 {
48     armnn::ClWorkloadFactory factory =
49         ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
50     IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QAsymmS8>(&factory);
51 }
52 
BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQSymmS8Cl,ClContextControlFixture)53 BOOST_FIXTURE_TEST_CASE(IsLayerSupportedQSymmS8Cl, ClContextControlFixture)
54 {
55     armnn::ClWorkloadFactory factory =
56         ClWorkloadFactoryHelper::GetFactory(ClWorkloadFactoryHelper::GetMemoryManager());
57     IsLayerSupportedTests<armnn::ClWorkloadFactory, armnn::DataType::QSymmS8>(&factory);
58 }
59 
BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl,ClContextControlFixture)60 BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedCl, ClContextControlFixture)
61 {
62     std::string reasonIfUnsupported;
63 
64     bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp16ToFp32Layer,
65       armnn::DataType::Float16, armnn::DataType::Float32>(reasonIfUnsupported);
66 
67     BOOST_CHECK(result);
68 }
69 
BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp32InputCl,ClContextControlFixture)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 
BOOST_FIXTURE_TEST_CASE(IsConvertFp16ToFp32SupportedFp16OutputCl,ClContextControlFixture)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 
BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl,ClContextControlFixture)92 BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedCl, ClContextControlFixture)
93 {
94     std::string reasonIfUnsupported;
95 
96     bool result = IsConvertLayerSupportedTests<armnn::ClWorkloadFactory, armnn::ConvertFp32ToFp16Layer,
97       armnn::DataType::Float32, armnn::DataType::Float16>(reasonIfUnsupported);
98 
99     BOOST_CHECK(result);
100 }
101 
BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp16InputCl,ClContextControlFixture)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 
BOOST_FIXTURE_TEST_CASE(IsConvertFp32ToFp16SupportedFp32OutputCl,ClContextControlFixture)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 
BOOST_FIXTURE_TEST_CASE(IsLogicalBinarySupportedCl,ClContextControlFixture)124 BOOST_FIXTURE_TEST_CASE(IsLogicalBinarySupportedCl, ClContextControlFixture)
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 
BOOST_FIXTURE_TEST_CASE(IsLogicalBinaryBroadcastSupportedCl,ClContextControlFixture)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 
BOOST_FIXTURE_TEST_CASE(IsMeanSupportedCl,ClContextControlFixture)144 BOOST_FIXTURE_TEST_CASE(IsMeanSupportedCl, ClContextControlFixture)
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 
BOOST_AUTO_TEST_CASE(IsConstantSupportedCl)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 
191 BOOST_AUTO_TEST_SUITE_END()
192