From ee493ae23b8cd6de5a6c578cea34bccb478d2f64 Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Wed, 5 Jul 2017 10:52:21 +0100 Subject: COMPMID-415: Port benchmark tests and remove google benchmark Change-Id: I2f17720a4e974b2cc4481f2884d9f351e8f78b5f Reviewed-on: http://mpd-gerrit.cambridge.arm.com/79776 Tested-by: Kaizen Reviewed-by: Anthony Barbier --- tests/benchmark/common/ActivationLayer.h | 92 ----------------------- tests/benchmark/common/ConvolutionLayer.h | 107 -------------------------- tests/benchmark/common/FullyConnectedLayer.h | 108 --------------------------- tests/benchmark/common/NormalizationLayer.h | 96 ------------------------ tests/benchmark/common/PoolingLayer.h | 95 ----------------------- 5 files changed, 498 deletions(-) delete mode 100644 tests/benchmark/common/ActivationLayer.h delete mode 100644 tests/benchmark/common/ConvolutionLayer.h delete mode 100644 tests/benchmark/common/FullyConnectedLayer.h delete mode 100644 tests/benchmark/common/NormalizationLayer.h delete mode 100644 tests/benchmark/common/PoolingLayer.h (limited to 'tests/benchmark/common') diff --git a/tests/benchmark/common/ActivationLayer.h b/tests/benchmark/common/ActivationLayer.h deleted file mode 100644 index 8e22281025..0000000000 --- a/tests/benchmark/common/ActivationLayer.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef __ARM_COMPUTE_TEST_BENCHMARK_ACTIVATION_LAYER_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_ACTIVATION_LAYER_H__ - -#include "TensorLibrary.h" -#include "Utils.h" -#include "dataset/ActivationLayerDataset.h" - -#include - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class ActivationLayer : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const ActivationLayerDataObject act_obj = *(DataSet().begin() + state.range(0)); - - // Set batched in source and destination shapes - const unsigned int batches = state.range(1); - const unsigned int fixed_point_position = 4; - TensorShape shape = act_obj.shape; - shape.set(shape.num_dimensions(), batches); - - // Create tensors - src = create_tensor(shape, dt, 1, fixed_point_position); - dst = create_tensor(shape, dt, 1, fixed_point_position); - - // Create and configure function - act_layer.configure(&src, &dst, act_obj.info); - - // Allocate tensors - src.allocator()->allocate(); - dst.allocator()->allocate(); - - // Fill tensors - library->fill_tensor_uniform(Accessor(src), 0); - } - - void TearDown(::benchmark::State &state) override - { - src.allocator()->free(); - dst.allocator()->free(); - - profiler.submit(state); - } - - Function act_layer{}; - Profiler profiler{}; - -private: - TensorType src{}; - TensorType dst{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_ACTIVATION_LAYER_H__ diff --git a/tests/benchmark/common/ConvolutionLayer.h b/tests/benchmark/common/ConvolutionLayer.h deleted file mode 100644 index a777a95bde..0000000000 --- a/tests/benchmark/common/ConvolutionLayer.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef __ARM_COMPUTE_TEST_BENCHMARK_CONVOLUTION_LAYER_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_CONVOLUTION_LAYER_H__ - -#include "TensorLibrary.h" -#include "Utils.h" -#include "dataset/ConvolutionLayerDataset.h" - -#include - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class ConvolutionLayer : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const ConvolutionLayerDataObject conv_obj = *(DataSet().begin() + state.range(0)); - - // Set batched in source and destination shapes - const unsigned int batches = state.range(1); - const unsigned int fixed_point_position = 4; - TensorShape src_shape = conv_obj.src_shape; - TensorShape dst_shape = conv_obj.dst_shape; - src_shape.set(3 /* batch */, batches); - dst_shape.set(3 /* batch */, batches); - - // Create tensors - src = create_tensor(src_shape, dt, 1, fixed_point_position); - weights = create_tensor(conv_obj.weights_shape, dt, 1, fixed_point_position); - bias = create_tensor(conv_obj.bias_shape, dt, 1, fixed_point_position); - dst = create_tensor(dst_shape, dt, 1, fixed_point_position); - - // Create and configure function - conv_layer = std::unique_ptr(new Function()); - conv_layer->configure(&src, &weights, &bias, &dst, conv_obj.info); - - // Allocate tensors - src.allocator()->allocate(); - weights.allocator()->allocate(); - bias.allocator()->allocate(); - dst.allocator()->allocate(); - - // Fill tensors - library->fill_tensor_uniform(Accessor(src), 0); - library->fill_tensor_uniform(Accessor(weights), 1); - library->fill_tensor_uniform(Accessor(bias), 2); - } - - void TearDown(::benchmark::State &state) override - { - conv_layer.reset(); - - src.allocator()->free(); - weights.allocator()->free(); - bias.allocator()->free(); - dst.allocator()->free(); - - profiler.submit(state); - } - - std::unique_ptr conv_layer{ nullptr }; - Profiler profiler{}; - -private: - TensorType src{}; - TensorType weights{}; - TensorType bias{}; - TensorType dst{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_CONVOLUTION_LAYER_H__ diff --git a/tests/benchmark/common/FullyConnectedLayer.h b/tests/benchmark/common/FullyConnectedLayer.h deleted file mode 100644 index eeef1de28a..0000000000 --- a/tests/benchmark/common/FullyConnectedLayer.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef __ARM_COMPUTE_TEST_BENCHMARK_FULLYCONNECTED_LAYER_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_FULLYCONNECTED_LAYER_H__ - -#include "TensorLibrary.h" -#include "Utils.h" -#include "dataset/ConvolutionLayerDataset.h" - -#include -#include - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class FullyConnectedLayer : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const FullyConnectedLayerDataObject fc_obj = *(DataSet().begin() + state.range(0)); - - // Set batched in source and destination shapes - const unsigned int batches = state.range(1); - const unsigned int fixed_point_position = 4; - TensorShape src_shape = fc_obj.src_shape; - TensorShape dst_shape = fc_obj.dst_shape; - src_shape.set(src_shape.num_dimensions(), batches); - dst_shape.set(dst_shape.num_dimensions(), batches); - - // Create tensors - src = create_tensor(src_shape, dt, 1, fixed_point_position); - weights = create_tensor(fc_obj.weights_shape, dt, 1, fixed_point_position); - bias = create_tensor(fc_obj.bias_shape, dt, 1, fixed_point_position); - dst = create_tensor(dst_shape, dt, 1, fixed_point_position); - - // Create and configure function - fc_layer = std::unique_ptr(new Function()); - fc_layer->configure(&src, &weights, &bias, &dst); - - // Allocate tensors - src.allocator()->allocate(); - weights.allocator()->allocate(); - bias.allocator()->allocate(); - dst.allocator()->allocate(); - - // Fill tensors - library->fill_tensor_uniform(Accessor(src), 0); - library->fill_tensor_uniform(Accessor(weights), 1); - library->fill_tensor_uniform(Accessor(bias), 2); - } - - void TearDown(::benchmark::State &state) override - { - fc_layer.reset(); - - src.allocator()->free(); - weights.allocator()->free(); - bias.allocator()->free(); - dst.allocator()->free(); - - profiler.submit(state); - } - - std::unique_ptr fc_layer{ nullptr }; - Profiler profiler{}; - -private: - TensorType src{}; - TensorType weights{}; - TensorType bias{}; - TensorType dst{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_FULLYCONNECTED_LAYER_H__ diff --git a/tests/benchmark/common/NormalizationLayer.h b/tests/benchmark/common/NormalizationLayer.h deleted file mode 100644 index 580dca6c48..0000000000 --- a/tests/benchmark/common/NormalizationLayer.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef __ARM_COMPUTE_TEST_BENCHMARK_NORMALIZATION_LAYER_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_NORMALIZATION_LAYER_H__ - -#include "TensorLibrary.h" -#include "Utils.h" -#include "dataset/NormalizationLayerDataset.h" - -#include -#include - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class NormalizationLayer : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const NormalizationLayerDataObject norm_obj = *(DataSet().begin() + state.range(0)); - - // Set batched in source and destination shapes - const unsigned int batches = state.range(1); - const unsigned int fixed_point_position = 4; - TensorShape shape = norm_obj.shape; - shape.set(shape.num_dimensions(), batches); - - // Create tensors - src = create_tensor(shape, dt, 1, fixed_point_position); - dst = create_tensor(shape, dt, 1, fixed_point_position); - - // Create and configure function - norm_layer = std::unique_ptr(new Function()); - norm_layer->configure(&src, &dst, norm_obj.info); - - // Allocate tensors - src.allocator()->allocate(); - dst.allocator()->allocate(); - - // Fill tensors - library->fill_tensor_uniform(Accessor(src), 0); - } - - void TearDown(::benchmark::State &state) override - { - norm_layer.reset(); - - src.allocator()->free(); - dst.allocator()->free(); - - profiler.submit(state); - } - - std::unique_ptr norm_layer{ nullptr }; - Profiler profiler{}; - -private: - TensorType src{}; - TensorType dst{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_NORMALIZATION_LAYER_H__ diff --git a/tests/benchmark/common/PoolingLayer.h b/tests/benchmark/common/PoolingLayer.h deleted file mode 100644 index 96ff905568..0000000000 --- a/tests/benchmark/common/PoolingLayer.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef __ARM_COMPUTE_TEST_BENCHMARK_POOLING_LAYER_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_POOLING_LAYER_H__ - -#include "TensorLibrary.h" -#include "Utils.h" -#include "dataset/PoolingLayerDataset.h" - -#include - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class PoolingLayer : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const PoolingLayerDataObject pool_obj = *(DataSet().begin() + state.range(0)); - - // Set batched in source and destination shapes - const unsigned int batches = state.range(1); - const unsigned int fixed_point_position = 4; - TensorShape src_shape = pool_obj.src_shape; - TensorShape dst_shape = pool_obj.dst_shape; - src_shape.set(src_shape.num_dimensions(), batches); - dst_shape.set(dst_shape.num_dimensions(), batches); - - // Create tensors - src = create_tensor(src_shape, dt, 1, fixed_point_position); - dst = create_tensor(dst_shape, dt, 1, fixed_point_position); - - // Create and configure function - pool_layer.configure(&src, &dst, pool_obj.info); - - // Allocate tensors - src.allocator()->allocate(); - dst.allocator()->allocate(); - - // Fill tensors - library->fill_tensor_uniform(Accessor(src), 0); - } - - void TearDown(::benchmark::State &state) override - { - // Free allocators - src.allocator()->free(); - dst.allocator()->free(); - - profiler.submit(state); - } - - Function pool_layer{}; - Profiler profiler{}; - -private: - TensorType src{}; - TensorType dst{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_POOLING_LAYER_H__ -- cgit v1.2.1