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/system_tests/CL/AlexNet.cpp | 86 ------------------- tests/benchmark/system_tests/CL/LeNet5.cpp | 81 ------------------ tests/benchmark/system_tests/NEON/AlexNet.cpp | 119 -------------------------- tests/benchmark/system_tests/NEON/LeNet5.cpp | 79 ----------------- tests/benchmark/system_tests/common/AlexNet.h | 95 -------------------- tests/benchmark/system_tests/common/LeNet5.h | 82 ------------------ 6 files changed, 542 deletions(-) delete mode 100644 tests/benchmark/system_tests/CL/AlexNet.cpp delete mode 100644 tests/benchmark/system_tests/CL/LeNet5.cpp delete mode 100644 tests/benchmark/system_tests/NEON/AlexNet.cpp delete mode 100644 tests/benchmark/system_tests/NEON/LeNet5.cpp delete mode 100644 tests/benchmark/system_tests/common/AlexNet.h delete mode 100644 tests/benchmark/system_tests/common/LeNet5.h (limited to 'tests/benchmark/system_tests') diff --git a/tests/benchmark/system_tests/CL/AlexNet.cpp b/tests/benchmark/system_tests/CL/AlexNet.cpp deleted file mode 100644 index 04b65b8c39..0000000000 --- a/tests/benchmark/system_tests/CL/AlexNet.cpp +++ /dev/null @@ -1,86 +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. - */ -#include "CL/CLAccessor.h" -#include "Globals.h" -#include "TensorLibrary.h" -#include "benchmark/Datasets.h" -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "arm_compute/core/Helpers.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLScheduler.h" -#include "arm_compute/runtime/CL/CLSubTensor.h" -#include "arm_compute/runtime/CL/CLTensor.h" -#include "arm_compute/runtime/CL/CLTensorAllocator.h" -#include "arm_compute/runtime/CL/functions/CLActivationLayer.h" -#include "arm_compute/runtime/CL/functions/CLConvolutionLayer.h" -#include "arm_compute/runtime/CL/functions/CLFullyConnectedLayer.h" -#include "arm_compute/runtime/CL/functions/CLNormalizationLayer.h" -#include "arm_compute/runtime/CL/functions/CLPoolingLayer.h" -#include "arm_compute/runtime/CL/functions/CLSoftmaxLayer.h" - -#include "benchmark/benchmark_api.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; -using namespace arm_compute::test::cl; - -#include "benchmark/system_tests/common/AlexNet.h" - -namespace -{ -using AlexNetSystemTest = AlexNetFixture; -} // namespace - -BENCHMARK_DEFINE_F(AlexNetSystemTest, cl_alexnet) -(::benchmark::State &state) -{ - while(state.KeepRunning()) - { - // Run AlexNet - profiler.start(); - network.run(); - CLScheduler::get().sync(); - profiler.stop(); - } -} - -BENCHMARK_REGISTER_F(AlexNetSystemTest, cl_alexnet) -->Threads(1) -->Iterations(10) -->ArgName("batch_size") -->Arg(1) -->Arg(4) -->Arg(8); \ No newline at end of file diff --git a/tests/benchmark/system_tests/CL/LeNet5.cpp b/tests/benchmark/system_tests/CL/LeNet5.cpp deleted file mode 100644 index 60bb37a35b..0000000000 --- a/tests/benchmark/system_tests/CL/LeNet5.cpp +++ /dev/null @@ -1,81 +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. - */ -#include "CL/CLAccessor.h" -#include "Globals.h" -#include "TensorLibrary.h" -#include "benchmark/Datasets.h" -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "arm_compute/core/Helpers.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/CL/CLScheduler.h" -#include "arm_compute/runtime/CL/CLTensor.h" -#include "arm_compute/runtime/CL/CLTensorAllocator.h" -#include "arm_compute/runtime/CL/functions/CLActivationLayer.h" -#include "arm_compute/runtime/CL/functions/CLConvolutionLayer.h" -#include "arm_compute/runtime/CL/functions/CLFullyConnectedLayer.h" -#include "arm_compute/runtime/CL/functions/CLPoolingLayer.h" -#include "arm_compute/runtime/CL/functions/CLSoftmaxLayer.h" - -#include "benchmark/benchmark_api.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; -using namespace arm_compute::test::cl; - -#include "benchmark/system_tests/common/LeNet5.h" - -namespace -{ -using LeNet5SystemTest = LeNet5Fixture; -} // namespace - -BENCHMARK_DEFINE_F(LeNet5SystemTest, cl_lenet5) -(::benchmark::State &state) -{ - while(state.KeepRunning()) - { - // Run LeNet5 - profiler.start(); - network.run(); - CLScheduler::get().sync(); - profiler.stop(); - } -} - -BENCHMARK_REGISTER_F(LeNet5SystemTest, cl_lenet5) -->Threads(1) -->Iterations(10) -->ArgName("batch_size") -->Arg(1) -->Arg(16) -->Arg(32); diff --git a/tests/benchmark/system_tests/NEON/AlexNet.cpp b/tests/benchmark/system_tests/NEON/AlexNet.cpp deleted file mode 100644 index 530c400ae3..0000000000 --- a/tests/benchmark/system_tests/NEON/AlexNet.cpp +++ /dev/null @@ -1,119 +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. - */ -#include "Globals.h" -#include "NEON/NEAccessor.h" -#include "TensorLibrary.h" -#include "benchmark/Datasets.h" -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "arm_compute/core/Helpers.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h" -#include "arm_compute/runtime/NEON/functions/NEConvolutionLayer.h" -#include "arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h" -#include "arm_compute/runtime/NEON/functions/NENormalizationLayer.h" -#include "arm_compute/runtime/NEON/functions/NEPoolingLayer.h" -#include "arm_compute/runtime/NEON/functions/NESoftmaxLayer.h" -#include "arm_compute/runtime/SubTensor.h" -#include "arm_compute/runtime/Tensor.h" -#include "arm_compute/runtime/TensorAllocator.h" - -#include "benchmark/benchmark_api.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; -using namespace arm_compute::test::neon; - -#include "benchmark/system_tests/common/AlexNet.h" - -namespace -{ -using AlexNetSystemTestF32 = AlexNetFixture; - -using AlexNetSystemTestQS8 = AlexNetFixture; -} // namespace - -// F32 -BENCHMARK_DEFINE_F(AlexNetSystemTestF32, neon_alexnet) -(::benchmark::State &state) -{ - while(state.KeepRunning()) - { - // Run AlexNet - profiler.start(); - network.run(); - profiler.stop(); - } -} - -BENCHMARK_REGISTER_F(AlexNetSystemTestF32, neon_alexnet) -->Threads(1) -->Iterations(10) -->ArgName("batch_size") -->Arg(1) -->Arg(4) -->Arg(8); - -// QS8 -BENCHMARK_DEFINE_F(AlexNetSystemTestQS8, neon_alexnet) -(::benchmark::State &state) -{ - while(state.KeepRunning()) - { - // Run AlexNet - profiler.start(); - network.run(); - profiler.stop(); - } -} - -BENCHMARK_REGISTER_F(AlexNetSystemTestQS8, neon_alexnet) -->Threads(1) -->Iterations(10) -->ArgName("batch_size") -->Arg(1) -->Arg(4) -->Arg(8); \ No newline at end of file diff --git a/tests/benchmark/system_tests/NEON/LeNet5.cpp b/tests/benchmark/system_tests/NEON/LeNet5.cpp deleted file mode 100644 index 8724d8ba3a..0000000000 --- a/tests/benchmark/system_tests/NEON/LeNet5.cpp +++ /dev/null @@ -1,79 +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. - */ -#include "Globals.h" -#include "NEON/NEAccessor.h" -#include "TensorLibrary.h" -#include "benchmark/Datasets.h" -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "arm_compute/core/Helpers.h" -#include "arm_compute/core/Types.h" -#include "arm_compute/runtime/NEON/functions/NEActivationLayer.h" -#include "arm_compute/runtime/NEON/functions/NEConvolutionLayer.h" -#include "arm_compute/runtime/NEON/functions/NEFullyConnectedLayer.h" -#include "arm_compute/runtime/NEON/functions/NEPoolingLayer.h" -#include "arm_compute/runtime/NEON/functions/NESoftmaxLayer.h" -#include "arm_compute/runtime/Tensor.h" -#include "arm_compute/runtime/TensorAllocator.h" - -#include "benchmark/benchmark_api.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; -using namespace arm_compute::test::neon; - -#include "benchmark/system_tests/common/LeNet5.h" - -namespace -{ -using LeNet5SystemTest = LeNet5Fixture; -} // namespace - -BENCHMARK_DEFINE_F(LeNet5SystemTest, neon_lenet5) -(::benchmark::State &state) -{ - while(state.KeepRunning()) - { - // Run LeNet5 - profiler.start(); - network.run(); - profiler.stop(); - } -} - -BENCHMARK_REGISTER_F(LeNet5SystemTest, neon_lenet5) -->Threads(1) -->Iterations(10) -->ArgName("batch_size") -->Arg(1) -->Arg(16) -->Arg(32); diff --git a/tests/benchmark/system_tests/common/AlexNet.h b/tests/benchmark/system_tests/common/AlexNet.h deleted file mode 100644 index 46e26bf723..0000000000 --- a/tests/benchmark/system_tests/common/AlexNet.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_ALEXNET_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_ALEXNET_H__ - -#include "tests/TensorLibrary.h" -#include "tests/Utils.h" - -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "model_objects/AlexNet.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class AlexNetFixture : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - const unsigned int batches = static_cast(state.range(0)); - const bool weights_transposed = true; - - network.init_weights(batches, weights_transposed); - network.build(); - network.allocate(); - network.fill_random(); - } - - void TearDown(::benchmark::State &state) override - { - profiler.submit(state); - network.clear(); - } - - Profiler profiler{}; - model_objects::AlexNet - network{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif //__ARM_COMPUTE_TEST_BENCHMARK_ALEXNET_H__ diff --git a/tests/benchmark/system_tests/common/LeNet5.h b/tests/benchmark/system_tests/common/LeNet5.h deleted file mode 100644 index a2d0cd577c..0000000000 --- a/tests/benchmark/system_tests/common/LeNet5.h +++ /dev/null @@ -1,82 +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_LENET5_H__ -#define __ARM_COMPUTE_TEST_BENCHMARK_LENET5_H__ - -#include "tests/TensorLibrary.h" -#include "tests/Utils.h" - -#include "benchmark/Profiler.h" -#include "benchmark/WallClockTimer.h" - -#include "model_objects/LeNet5.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::benchmark; - -namespace arm_compute -{ -namespace test -{ -namespace benchmark -{ -template -class LeNet5Fixture : public ::benchmark::Fixture -{ -public: - void SetUp(::benchmark::State &state) override - { - profiler.add(std::make_shared()); - - network.build(static_cast(state.range(0))); - network.fill_random(); - } - - void TearDown(::benchmark::State &state) override - { - profiler.submit(state); - network.clear(); - } - - Profiler profiler{}; - model_objects::LeNet5 - network{}; -}; -} // namespace benchmark -} // namespace test -} // namespace arm_compute -#endif /* __ARM_COMPUTE_TEST_BENCHMARK_LENET5_H__ */ -- cgit v1.2.1