blob: 725af88a17052c88c649f869d70664a5950d428b [file] [log] [blame]
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +01001/*
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +00002 * Copyright (c) 2017-2018 ARM Limited.
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +01003 *
4 * SPDX-License-Identifier: MIT
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24#include "arm_compute/core/Types.h"
25#include "arm_compute/runtime/CL/CLTensor.h"
26#include "arm_compute/runtime/CL/CLTensorAllocator.h"
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000027#include "arm_compute/runtime/CL/functions/CLDepthConcatenateLayer.h"
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010028#include "tests/CL/CLAccessor.h"
Moritz Pflanzera09de0c2017-09-01 20:41:12 +010029#include "tests/datasets/ShapeDatasets.h"
30#include "tests/framework/Asserts.h"
31#include "tests/framework/Macros.h"
32#include "tests/framework/datasets/Datasets.h"
33#include "tests/validation/Validation.h"
34#include "tests/validation/fixtures/DepthConcatenateLayerFixture.h"
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010035
36namespace arm_compute
37{
38namespace test
39{
40namespace validation
41{
42TEST_SUITE(CL)
43TEST_SUITE(DepthConcatenateLayer)
44
Georgios Pinitas88627fb2018-02-26 20:33:40 +000045TEST_CASE(Configuration, framework::DatasetMode::ALL)
46{
47 // Create tensors
48 CLTensor src1 = create_tensor<CLTensor>(TensorShape(32U, 32U, 128U), DataType::F32, 1);
49 CLTensor src2 = create_tensor<CLTensor>(TensorShape(32U, 32U, 32U), DataType::F32, 1);
50 CLTensor dst;
51
52 ARM_COMPUTE_EXPECT(src1.info()->is_resizable(), framework::LogLevel::ERRORS);
53 ARM_COMPUTE_EXPECT(src2.info()->is_resizable(), framework::LogLevel::ERRORS);
54 ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS);
55
56 // Create and configure function
57 CLDepthConcatenateLayer concat_layer;
58
59 concat_layer.configure({ &src1, &src2 }, &dst);
60
61 // Validate valid region
62 const ValidRegion valid_region = shape_to_valid_region(TensorShape(32U, 32U, 160U));
63 validate(dst.info()->valid_region(), valid_region);
64}
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010065
66template <typename T>
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000067using CLDepthConcatenateLayerFixture = DepthConcatenateLayerValidationFixture<CLTensor, ICLTensor, CLAccessor, CLDepthConcatenateLayer, T>;
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010068
69TEST_SUITE(Float)
70TEST_SUITE(FP16)
Georgios Pinitas583137c2017-08-31 18:12:42 +010071FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<half>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), framework::dataset::make("DataType",
72 DataType::F16)))
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010073{
74 // Validate output
75 validate(CLAccessor(_target), _reference);
76}
Georgios Pinitas583137c2017-08-31 18:12:42 +010077FIXTURE_DATA_TEST_CASE(RunLarge, CLDepthConcatenateLayerFixture<half>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), framework::dataset::make("DataType",
78 DataType::F16)))
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010079{
80 // Validate output
81 validate(CLAccessor(_target), _reference);
82}
83TEST_SUITE_END()
84
85TEST_SUITE(FP32)
86FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<float>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), framework::dataset::make("DataType",
87 DataType::F32)))
88{
89 // Validate output
90 validate(CLAccessor(_target), _reference);
91}
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000092FIXTURE_DATA_TEST_CASE(RunLarge, CLDepthConcatenateLayerFixture<float>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(), framework::dataset::make("DataType",
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +010093 DataType::F32)))
94{
95 // Validate output
96 validate(CLAccessor(_target), _reference);
97}
98TEST_SUITE_END()
99TEST_SUITE_END()
100
101TEST_SUITE(Quantized)
102TEST_SUITE(QS8)
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000103FIXTURE_DATA_TEST_CASE(RunTiny, CLDepthConcatenateLayerFixture<int8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Tiny2DShapes(),
104 framework::dataset::make("DataType",
105 DataType::QS8)))
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100106{
107 // Validate output
108 validate(CLAccessor(_target), _reference);
109}
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000110FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<int8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(),
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100111 framework::dataset::make("DataType",
112 DataType::QS8)))
113{
114 // Validate output
115 validate(CLAccessor(_target), _reference);
116}
117TEST_SUITE_END()
118
119TEST_SUITE(QS16)
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000120FIXTURE_DATA_TEST_CASE(RunTiny, CLDepthConcatenateLayerFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Tiny2DShapes(),
121 framework::dataset::make("DataType",
122 DataType::QS16)))
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100123{
124 // Validate output
125 validate(CLAccessor(_target), _reference);
126}
Anthony Barbier1c0d0ff2018-01-31 13:05:09 +0000127FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(),
Moritz Pflanzer3ce3ff42017-07-21 17:41:02 +0100128 framework::dataset::make("DataType",
129 DataType::QS16)))
130{
131 // Validate output
132 validate(CLAccessor(_target), _reference);
133}
134TEST_SUITE_END()
135TEST_SUITE_END()
136
137TEST_SUITE_END()
138TEST_SUITE_END()
139} // namespace validation
140} // namespace test
141} // namespace arm_compute