blob: 725af88a17052c88c649f869d70664a5950d428b [file] [log] [blame]
Kaizen8938bd32017-09-28 14:38:23 +01001/*
Anthony Barbier06ea0482018-02-22 15:45:35 +00002 * Copyright (c) 2017-2018 ARM Limited.
Kaizen8938bd32017-09-28 14:38:23 +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"
Anthony Barbier8140e1e2017-12-14 23:48:46 +000027#include "arm_compute/runtime/CL/functions/CLDepthConcatenateLayer.h"
Kaizen8938bd32017-09-28 14:38:23 +010028#include "tests/CL/CLAccessor.h"
29#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"
35
36namespace arm_compute
37{
38namespace test
39{
40namespace validation
41{
42TEST_SUITE(CL)
43TEST_SUITE(DepthConcatenateLayer)
44
Jenkinsc3f34a42018-03-02 12:38:09 +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}
65
Kaizen8938bd32017-09-28 14:38:23 +010066template <typename T>
Anthony Barbier8140e1e2017-12-14 23:48:46 +000067using CLDepthConcatenateLayerFixture = DepthConcatenateLayerValidationFixture<CLTensor, ICLTensor, CLAccessor, CLDepthConcatenateLayer, T>;
Kaizen8938bd32017-09-28 14:38:23 +010068
69TEST_SUITE(Float)
70TEST_SUITE(FP16)
71FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<half>, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), framework::dataset::make("DataType",
72 DataType::F16)))
73{
74 // Validate output
75 validate(CLAccessor(_target), _reference);
76}
77FIXTURE_DATA_TEST_CASE(RunLarge, CLDepthConcatenateLayerFixture<half>, framework::DatasetMode::NIGHTLY, combine(datasets::Large2DShapes(), framework::dataset::make("DataType",
78 DataType::F16)))
79{
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}
Anthony Barbier8140e1e2017-12-14 23:48:46 +000092FIXTURE_DATA_TEST_CASE(RunLarge, CLDepthConcatenateLayerFixture<float>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(), framework::dataset::make("DataType",
Kaizen8938bd32017-09-28 14:38:23 +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 Barbier06ea0482018-02-22 15:45:35 +0000103FIXTURE_DATA_TEST_CASE(RunTiny, CLDepthConcatenateLayerFixture<int8_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Tiny2DShapes(),
104 framework::dataset::make("DataType",
105 DataType::QS8)))
Kaizen8938bd32017-09-28 14:38:23 +0100106{
107 // Validate output
108 validate(CLAccessor(_target), _reference);
109}
Anthony Barbier06ea0482018-02-22 15:45:35 +0000110FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<int8_t>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(),
Kaizen8938bd32017-09-28 14:38:23 +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 Barbier06ea0482018-02-22 15:45:35 +0000120FIXTURE_DATA_TEST_CASE(RunTiny, CLDepthConcatenateLayerFixture<int16_t>, framework::DatasetMode::PRECOMMIT, combine(datasets::Tiny2DShapes(),
121 framework::dataset::make("DataType",
122 DataType::QS16)))
Kaizen8938bd32017-09-28 14:38:23 +0100123{
124 // Validate output
125 validate(CLAccessor(_target), _reference);
126}
Anthony Barbier06ea0482018-02-22 15:45:35 +0000127FIXTURE_DATA_TEST_CASE(RunSmall, CLDepthConcatenateLayerFixture<int16_t>, framework::DatasetMode::NIGHTLY, combine(datasets::DepthConcatenateLayerShapes(),
Kaizen8938bd32017-09-28 14:38:23 +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