13 explicit ConcatenationFixture(
const std::string & inputShape1,
14 const std::string & inputShape2,
15 const std::string & outputShape,
16 const std::string & axis,
17 const std::string & activation=
"NONE")
22 "operator_codes": [ { "builtin_code": "CONCATENATION" } ], 26 "shape": )" + inputShape1 + R"(, 29 "name": "inputTensor1", 38 "shape": )" + inputShape2 + R"(, 41 "name": "inputTensor2", 50 "shape": )" + outputShape + R"( , 53 "name": "outputTensor", 69 "builtin_options_type": "ConcatenationOptions", 71 "axis": )" + axis + R"(, 72 "fused_activation_function": )" + activation + R"( 74 "custom_options_format": "FLEXBUFFERS" 89 struct ConcatenationFixtureNegativeDim : ConcatenationFixture
91 ConcatenationFixtureNegativeDim() : ConcatenationFixture(
"[ 1, 1, 2, 2 ]",
97 TEST_CASE_FIXTURE(ConcatenationFixtureNegativeDim,
"ParseConcatenationNegativeDim")
99 RunTest<4, armnn::DataType::QAsymmU8>(
101 {{
"inputTensor1", { 0, 1, 2, 3 }},
102 {
"inputTensor2", { 4, 5, 6, 7 }}},
103 {{
"outputTensor", { 0, 1, 2, 3, 4, 5, 6, 7 }}});
106 struct ConcatenationFixtureNCHW : ConcatenationFixture
108 ConcatenationFixtureNCHW() : ConcatenationFixture(
"[ 1, 1, 2, 2 ]",
"[ 1, 1, 2, 2 ]",
"[ 1, 2, 2, 2 ]",
"1" ) {}
113 RunTest<4, armnn::DataType::QAsymmU8>(
115 {{
"inputTensor1", { 0, 1, 2, 3 }},
116 {
"inputTensor2", { 4, 5, 6, 7 }}},
117 {{
"outputTensor", { 0, 1, 2, 3, 4, 5, 6, 7 }}});
120 struct ConcatenationFixtureNHWC : ConcatenationFixture
122 ConcatenationFixtureNHWC() : ConcatenationFixture(
"[ 1, 1, 2, 2 ]",
"[ 1, 1, 2, 2 ]",
"[ 1, 1, 2, 4 ]",
"3" ) {}
127 RunTest<4, armnn::DataType::QAsymmU8>(
129 {{
"inputTensor1", { 0, 1, 2, 3 }},
130 {
"inputTensor2", { 4, 5, 6, 7 }}},
131 {{
"outputTensor", { 0, 1, 4, 5, 2, 3, 6, 7 }}});
134 struct ConcatenationFixtureDim1 : ConcatenationFixture
136 ConcatenationFixtureDim1() : ConcatenationFixture(
"[ 1, 2, 3, 4 ]",
"[ 1, 2, 3, 4 ]",
"[ 1, 4, 3, 4 ]",
"1" ) {}
141 RunTest<4, armnn::DataType::QAsymmU8>(
143 { {
"inputTensor1", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
144 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 } },
145 {
"inputTensor2", { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
146 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73 } } },
147 { {
"outputTensor", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
148 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
149 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
150 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73 } } });
153 struct ConcatenationFixtureDim3 : ConcatenationFixture
155 ConcatenationFixtureDim3() : ConcatenationFixture(
"[ 1, 2, 3, 4 ]",
"[ 1, 2, 3, 4 ]",
"[ 1, 2, 3, 8 ]",
"3" ) {}
160 RunTest<4, armnn::DataType::QAsymmU8>(
162 { {
"inputTensor1", { 0, 1, 2, 3,
168 {
"inputTensor2", { 50, 51, 52, 53,
173 70, 71, 72, 73 } } },
174 { {
"outputTensor", { 0, 1, 2, 3,
185 70, 71, 72, 73 } } });
188 struct ConcatenationFixture3DDim0 : ConcatenationFixture
190 ConcatenationFixture3DDim0() : ConcatenationFixture(
"[ 1, 2, 3]",
"[ 2, 2, 3]",
"[ 3, 2, 3]",
"0" ) {}
195 RunTest<3, armnn::DataType::QAsymmU8>(
197 { {
"inputTensor1", { 0, 1, 2, 3, 4, 5 } },
198 {
"inputTensor2", { 6, 7, 8, 9, 10, 11,
199 12, 13, 14, 15, 16, 17 } } },
200 { {
"outputTensor", { 0, 1, 2, 3, 4, 5,
202 12, 13, 14, 15, 16, 17 } } });
205 struct ConcatenationFixture3DDim1 : ConcatenationFixture
207 ConcatenationFixture3DDim1() : ConcatenationFixture(
"[ 1, 2, 3]",
"[ 1, 4, 3]",
"[ 1, 6, 3]",
"1" ) {}
212 RunTest<3, armnn::DataType::QAsymmU8>(
214 { {
"inputTensor1", { 0, 1, 2, 3, 4, 5 } },
215 {
"inputTensor2", { 6, 7, 8, 9, 10, 11,
216 12, 13, 14, 15, 16, 17 } } },
217 { {
"outputTensor", { 0, 1, 2, 3, 4, 5,
219 12, 13, 14, 15, 16, 17 } } });
222 struct ConcatenationFixture3DDim2 : ConcatenationFixture
224 ConcatenationFixture3DDim2() : ConcatenationFixture(
"[ 1, 2, 3]",
"[ 1, 2, 6]",
"[ 1, 2, 9]",
"2" ) {}
229 RunTest<3, armnn::DataType::QAsymmU8>(
231 { {
"inputTensor1", { 0, 1, 2,
233 {
"inputTensor2", { 6, 7, 8, 9, 10, 11,
234 12, 13, 14, 15, 16, 17 } } },
235 { {
"outputTensor", { 0, 1, 2, 6, 7, 8, 9, 10, 11,
236 3, 4, 5, 12, 13, 14, 15, 16, 17 } } });
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
void Setup(bool testDynamic=true)