diff options
author | Eren Kopuz <eren.kopuz@arm.com> | 2020-06-09 15:37:43 +0100 |
---|---|---|
committer | SiCong Li <sicong.li@arm.com> | 2020-06-18 10:18:25 +0000 |
commit | 350099ea9868aa6ec84d082fe6d5962fafc86aa4 (patch) | |
tree | 9c4be974b045155e0c5007f9c82c1ded2335c4d9 /examples/gemm_tuner | |
parent | 6ad60af32af672f27e152bf37790cd0c0c4db696 (diff) | |
download | ComputeLibrary-350099ea9868aa6ec84d082fe6d5962fafc86aa4.tar.gz |
COMPMID-3451: Add support for F16 in Gemm Tuner
- Comand line option added to specify F32 or F16
Change-Id: Ibd8a5c8d013a6dff601aa773e94946de1ff6e280
Signed-off-by: Eren Kopuz <eren.kopuz@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3322
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: SiCong Li <sicong.li@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'examples/gemm_tuner')
-rw-r--r-- | examples/gemm_tuner/CommonGemmExampleOptions.cpp | 24 | ||||
-rw-r--r-- | examples/gemm_tuner/CommonGemmExampleOptions.h | 25 | ||||
-rw-r--r-- | examples/gemm_tuner/cl_gemm_native.cpp | 15 | ||||
-rw-r--r-- | examples/gemm_tuner/cl_gemm_reshaped.cpp | 15 | ||||
-rw-r--r-- | examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp | 15 |
5 files changed, 54 insertions, 40 deletions
diff --git a/examples/gemm_tuner/CommonGemmExampleOptions.cpp b/examples/gemm_tuner/CommonGemmExampleOptions.cpp index a93d0191b3..9e23d5596b 100644 --- a/examples/gemm_tuner/CommonGemmExampleOptions.cpp +++ b/examples/gemm_tuner/CommonGemmExampleOptions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -34,6 +34,7 @@ using namespace utils; os << "N : " << common_params.N << std::endl; os << "K : " << common_params.K << std::endl; os << "B : " << common_params.B << std::endl; + os << "Data type : " << common_params.data_type << std::endl; return os; } @@ -42,22 +43,33 @@ CommonGemmExampleOptions::CommonGemmExampleOptions(CommandLineParser &parser) M(parser.add_positional_option<SimpleOption<size_t>>("M", 100)), N(parser.add_positional_option<SimpleOption<size_t>>("N", 100)), K(parser.add_positional_option<SimpleOption<size_t>>("K", 50)), - B(parser.add_positional_option<SimpleOption<size_t>>("B", 1)) + B(parser.add_positional_option<SimpleOption<size_t>>("B", 1)), + data_type() { + const std::set<DataType> supported_data_types + { + DataType::F16, + DataType::F32, + }; + + data_type = parser.add_option<EnumOption<DataType>>("type", supported_data_types, DataType::F32); + help->set_help("Show this help message."); M->set_help("Number of lhs matrix rows."); N->set_help("Number of rhs matrix columns."); K->set_help("Number of lhs matrix columns/rhs matrix rows."); B->set_help("Batch size."); + data_type->set_help("Data type to use"); } CommonGemmExampleParams consume_common_gemm_example_parameters(const CommonGemmExampleOptions &options) { CommonGemmExampleParams common_params; - common_params.M = options.M->value(); - common_params.N = options.N->value(); - common_params.K = options.K->value(); - common_params.B = options.B->value(); + common_params.M = options.M->value(); + common_params.N = options.N->value(); + common_params.K = options.K->value(); + common_params.B = options.B->value(); + common_params.data_type = options.data_type->value(); return common_params; } } // namespace gemm_tuner diff --git a/examples/gemm_tuner/CommonGemmExampleOptions.h b/examples/gemm_tuner/CommonGemmExampleOptions.h index 5f079abfc1..ec60ca6b89 100644 --- a/examples/gemm_tuner/CommonGemmExampleOptions.h +++ b/examples/gemm_tuner/CommonGemmExampleOptions.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -24,6 +24,9 @@ #ifndef ARM_COMPUTE_EXAMPLES_GEMM_TUNER_COMMON_GEMM_EXAMPLE_OPTIONS #define ARM_COMPUTE_EXAMPLES_GEMM_TUNER_COMMON_GEMM_EXAMPLE_OPTIONS +#include "arm_compute/core/Types.h" +#include "arm_compute/graph/TypeLoader.h" +#include "utils/TypePrinter.h" #include "utils/command_line/CommandLineOptions.h" #include "utils/command_line/CommandLineParser.h" @@ -32,10 +35,11 @@ namespace gemm_tuner /** Structure holding all the common gemm example parameters */ struct CommonGemmExampleParams { - size_t M{ 100 }; /**< Number of lhs matrix rows */ - size_t N{ 100 }; /**< Number of rhs matrix columns */ - size_t K{ 50 }; /**< Number of lhs matrix columns/rhs matrix rows */ - size_t B{ 1 }; /**< Batch size */ + size_t M{ 100 }; /**< Number of lhs matrix rows */ + size_t N{ 100 }; /**< Number of rhs matrix columns */ + size_t K{ 50 }; /**< Number of lhs matrix columns/rhs matrix rows */ + size_t B{ 1 }; /**< Batch size */ + arm_compute::DataType data_type{ arm_compute::DataType::F32 }; /**< Data type */ }; /** Formatted output of the CommonGemmExampleParams type @@ -75,11 +79,12 @@ public: /** Default destructor */ ~CommonGemmExampleOptions() = default; - arm_compute::utils::ToggleOption *help; /**< Show help option */ - arm_compute::utils::SimpleOption<size_t> *M; /**< Number of lhs matrix rows option */ - arm_compute::utils::SimpleOption<size_t> *N; /**< Number of rhs matrix columns option */ - arm_compute::utils::SimpleOption<size_t> *K; /**< Number of lhs matrix columns/rhs matrix rows option */ - arm_compute::utils::SimpleOption<size_t> *B; /**< Batch size option */ + arm_compute::utils::ToggleOption *help; /**< Show help option */ + arm_compute::utils::SimpleOption<size_t> *M; /**< Number of lhs matrix rows option */ + arm_compute::utils::SimpleOption<size_t> *N; /**< Number of rhs matrix columns option */ + arm_compute::utils::SimpleOption<size_t> *K; /**< Number of lhs matrix columns/rhs matrix rows option */ + arm_compute::utils::SimpleOption<size_t> *B; /**< Batch size option */ + arm_compute::utils::EnumOption<arm_compute::DataType> *data_type; /**< Data type */ }; /** Consumes the common gemm example options and creates a structure containing all information diff --git a/examples/gemm_tuner/cl_gemm_native.cpp b/examples/gemm_tuner/cl_gemm_native.cpp index 0cacd82087..017de5cb02 100644 --- a/examples/gemm_tuner/cl_gemm_native.cpp +++ b/examples/gemm_tuner/cl_gemm_native.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -132,10 +132,9 @@ public: bool do_setup(int argc, char **argv) override { // Default parameters - const DataType data_type = DataType::F32; - const float alpha = 1.0f; - const float beta = 0.0f; - const ActivationLayerInfo act_info = ActivationLayerInfo(); + const float alpha = 1.0f; + const float beta = 0.0f; + const ActivationLayerInfo act_info = ActivationLayerInfo(); CommonGemmExampleParams params; GemmConfigs configs; @@ -174,9 +173,9 @@ public: CLScheduler::get().default_init(&tuner); - lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, data_type)); - rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, data_type)); - bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, data_type)); + lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, params.data_type)); + rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, params.data_type)); + bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, params.data_type)); GEMMLHSMatrixInfo lhs_info; lhs_info.m0 = configs.m0; diff --git a/examples/gemm_tuner/cl_gemm_reshaped.cpp b/examples/gemm_tuner/cl_gemm_reshaped.cpp index e579ed762c..da72dfd58d 100644 --- a/examples/gemm_tuner/cl_gemm_reshaped.cpp +++ b/examples/gemm_tuner/cl_gemm_reshaped.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -177,10 +177,9 @@ public: bool do_setup(int argc, char **argv) override { // Default parameters - const DataType data_type = DataType::F32; - const float alpha = 1.0f; - const float beta = 0.0f; - const ActivationLayerInfo act_info = ActivationLayerInfo(); + const float alpha = 1.0f; + const float beta = 0.0f; + const ActivationLayerInfo act_info = ActivationLayerInfo(); CommonGemmExampleParams params; GemmConfigs configs; @@ -219,9 +218,9 @@ public: CLScheduler::get().default_init(&tuner); - lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, data_type)); - rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, data_type)); - bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, data_type)); + lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, params.data_type)); + rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, params.data_type)); + bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, params.data_type)); GEMMLHSMatrixInfo lhs_info; lhs_info.m0 = configs.m0; diff --git a/examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp b/examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp index 0d161aab2d..09454990d7 100644 --- a/examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp +++ b/examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited. + * Copyright (c) 2019-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -150,10 +150,9 @@ public: bool do_setup(int argc, char **argv) override { // Default parameters - const DataType data_type = DataType::F32; - const float alpha = 1.0f; - const float beta = 0.0f; - const ActivationLayerInfo act_info = ActivationLayerInfo(); + const float alpha = 1.0f; + const float beta = 0.0f; + const ActivationLayerInfo act_info = ActivationLayerInfo(); CommonGemmExampleParams params; GemmConfigs configs; @@ -192,9 +191,9 @@ public: CLScheduler::get().default_init(&tuner); - lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, data_type)); - rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, data_type)); - bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, data_type)); + lhs.allocator()->init(TensorInfo(TensorShape(params.K, params.M, params.B), 1, params.data_type)); + rhs.allocator()->init(TensorInfo(TensorShape(params.N, params.K, params.B), 1, params.data_type)); + bias.allocator()->init(TensorInfo(TensorShape(params.N, 1, params.B), 1, params.data_type)); GEMMLHSMatrixInfo lhs_info; lhs_info.m0 = configs.m0; |