13 explicit SplitFixture(
const std::string& inputShape,
14 const std::string& axisShape,
15 const std::string& numSplits,
16 const std::string& outputShape1,
17 const std::string& outputShape2,
18 const std::string& axisData,
19 const std::string& dataType)
24 "operator_codes": [ { "builtin_code": "SPLIT" } ], 28 "shape": )" + inputShape + R"(, 29 "type": )" + dataType + R"(, 31 "name": "inputTensor", 40 "shape": )" + axisShape + R"(, 52 "shape": )" + outputShape1 + R"( , 53 "type":)" + dataType + R"(, 55 "name": "outputTensor1", 64 "shape": )" + outputShape2 + R"( , 65 "type":)" + dataType + R"(, 67 "name": "outputTensor2", 83 "builtin_options_type": "SplitOptions", 85 "num_splits": )" + numSplits + R"( 87 "custom_options_format": "FLEXBUFFERS" 91 "buffers" : [ {}, {"data": )" + axisData + R"( }, {}, {} ] 100 struct SimpleSplitFixtureFloat32 : SplitFixture
102 SimpleSplitFixtureFloat32()
103 : SplitFixture(
"[ 2, 2, 2, 2 ]",
"[ ]",
"2",
"[ 2, 1, 2, 2 ]",
"[ 2, 1, 2, 2 ]",
"[ 1, 0, 0, 0 ]",
"FLOAT32")
110 RunTest<4, armnn::DataType::Float32>(
112 { {
"inputTensor", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
113 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f } } },
114 { {
"outputTensor1", { 1.0f, 2.0f, 3.0f, 4.0f, 9.0f, 10.0f, 11.0f, 12.0f } },
115 {
"outputTensor2", { 5.0f, 6.0f, 7.0f, 8.0f, 13.0f, 14.0f, 15.0f, 16.0f } } });
118 struct SimpleSplitAxisThreeFixtureFloat32 : SplitFixture
120 SimpleSplitAxisThreeFixtureFloat32()
121 : SplitFixture(
"[ 2, 2, 2, 2 ]",
"[ ]",
"2",
"[ 2, 2, 2, 1 ]",
"[ 2, 2, 2, 1 ]",
"[ 3, 0, 0, 0 ]",
"FLOAT32")
125 TEST_CASE_FIXTURE(SimpleSplitAxisThreeFixtureFloat32,
"ParseAxisThreeSplitTwoFloat32")
127 RunTest<4, armnn::DataType::Float32>(
129 { {
"inputTensor", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
130 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f } } },
131 { {
"outputTensor1", { 1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 13.0f, 15.0f } },
132 {
"outputTensor2", { 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f, 14.0f, 16.0f } } } );
135 struct SimpleSplit2DFixtureFloat32 : SplitFixture
137 SimpleSplit2DFixtureFloat32()
138 : SplitFixture(
"[ 1, 8 ]",
"[ ]",
"2",
"[ 1, 4 ]",
"[ 1, 4 ]",
"[ 1, 0, 0, 0 ]",
"FLOAT32")
144 RunTest<2, armnn::DataType::Float32>(
146 { {
"inputTensor", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f } } },
147 { {
"outputTensor1", { 1.0f, 2.0f, 3.0f, 4.0f } },
148 {
"outputTensor2", { 5.0f, 6.0f, 7.0f, 8.0f } } } );
151 struct SimpleSplit3DFixtureFloat32 : SplitFixture
153 SimpleSplit3DFixtureFloat32()
154 : SplitFixture(
"[ 1, 8, 2 ]",
"[ ]",
"2",
"[ 1, 4, 2 ]",
"[ 1, 4, 2 ]",
"[ 1, 0, 0, 0 ]",
"FLOAT32")
160 RunTest<3, armnn::DataType::Float32>(
162 { {
"inputTensor", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f,
163 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f } } },
164 { {
"outputTensor1", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f } },
165 {
"outputTensor2", { 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f } } } );
168 struct SimpleSplitFixtureUint8 : SplitFixture
170 SimpleSplitFixtureUint8()
171 : SplitFixture(
"[ 2, 2, 2, 2 ]",
"[ ]",
"2",
"[ 2, 1, 2, 2 ]",
"[ 2, 1, 2, 2 ]",
"[ 1, 0, 0, 0 ]",
"UINT8")
178 RunTest<4, armnn::DataType::QAsymmU8>(
180 { {
"inputTensor", { 1, 2, 3, 4, 5, 6, 7, 8,
181 9, 10, 11, 12, 13, 14, 15, 16 } } },
182 { {
"outputTensor1", { 1, 2, 3, 4, 9, 10, 11, 12 } },
183 {
"outputTensor2", { 5, 6, 7, 8, 13, 14, 15, 16 } } });
186 struct SimpleSplitAxisThreeFixtureUint8 : SplitFixture
188 SimpleSplitAxisThreeFixtureUint8()
189 : SplitFixture(
"[ 2, 2, 2, 2 ]",
"[ ]",
"2",
"[ 2, 2, 2, 1 ]",
"[ 2, 2, 2, 1 ]",
"[ 3, 0, 0, 0 ]",
"UINT8")
193 TEST_CASE_FIXTURE(SimpleSplitAxisThreeFixtureUint8,
"ParseAxisThreeSplitTwoUint8")
195 RunTest<4, armnn::DataType::QAsymmU8>(
197 { {
"inputTensor", { 1, 2, 3, 4, 5, 6, 7, 8,
198 9, 10, 11, 12, 13, 14, 15, 16 } } },
199 { {
"outputTensor1", { 1, 3, 5, 7, 9, 11, 13, 15 } },
200 {
"outputTensor2", { 2, 4, 6, 8, 10, 12, 14, 16 } } } );
203 struct SimpleSplit2DFixtureUint8 : SplitFixture
205 SimpleSplit2DFixtureUint8()
206 : SplitFixture(
"[ 1, 8 ]",
"[ ]",
"2",
"[ 1, 4 ]",
"[ 1, 4 ]",
"[ 1, 0, 0, 0 ]",
"UINT8")
212 RunTest<2, armnn::DataType::QAsymmU8>(
214 { {
"inputTensor", { 1, 2, 3, 4, 5, 6, 7, 8 } } },
215 { {
"outputTensor1", { 1, 2, 3, 4 } },
216 {
"outputTensor2", { 5, 6, 7, 8 } } } );
219 struct SimpleSplit3DFixtureUint8 : SplitFixture
221 SimpleSplit3DFixtureUint8()
222 : SplitFixture(
"[ 1, 8, 2 ]",
"[ ]",
"2",
"[ 1, 4, 2 ]",
"[ 1, 4, 2 ]",
"[ 1, 0, 0, 0 ]",
"UINT8")
228 RunTest<3, armnn::DataType::QAsymmU8>(
230 { {
"inputTensor", { 1, 2, 3, 4, 5, 6, 7, 8,
231 9, 10, 11, 12, 13, 14, 15, 16 } } },
232 { {
"outputTensor1", { 1, 2, 3, 4, 5, 6, 7, 8 } },
233 {
"outputTensor2", { 9, 10, 11, 12, 13, 14, 15, 16 } } } );
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
void Setup(bool testDynamic=true)