aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorEren Kopuz <eren.kopuz@arm.com>2020-06-09 15:37:43 +0100
committerSiCong Li <sicong.li@arm.com>2020-06-18 10:18:25 +0000
commit350099ea9868aa6ec84d082fe6d5962fafc86aa4 (patch)
tree9c4be974b045155e0c5007f9c82c1ded2335c4d9 /examples
parent6ad60af32af672f27e152bf37790cd0c0c4db696 (diff)
downloadComputeLibrary-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')
-rw-r--r--examples/SConscript12
-rw-r--r--examples/gemm_tuner/CommonGemmExampleOptions.cpp24
-rw-r--r--examples/gemm_tuner/CommonGemmExampleOptions.h25
-rw-r--r--examples/gemm_tuner/cl_gemm_native.cpp15
-rw-r--r--examples/gemm_tuner/cl_gemm_reshaped.cpp15
-rw-r--r--examples/gemm_tuner/cl_gemm_reshaped_rhs_only.cpp15
6 files changed, 63 insertions, 43 deletions
diff --git a/examples/SConscript b/examples/SConscript
index 8971d3c6d8..032fdfc558 100644
--- a/examples/SConscript
+++ b/examples/SConscript
@@ -91,9 +91,15 @@ if env['gemm_tuner'] and env['opencl']:
for file in Glob("./gemm_tuner/cl_*.cpp"):
example = os.path.basename(os.path.splitext(str(file))[0])
example = os.path.join("gemm_tuner", example)
- prog = examples_env.Program(example, ["{}.cpp".format(example), utils, gemm_tuner_common_options], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = examples_libs + arm_compute_libs)
- Depends(prog, arm_compute_dependency)
- prog = install_bin(prog)
+ if env['os'] in ['android', 'bare_metal'] or env['standalone']:
+ prog = examples_env.Program(example, ["{}.cpp".format(example), utils, gemm_tuner_common_options], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--whole-archive',graph_dependency,'-Wl,--no-whole-archive', '-fstack-protector-strong'] )
+ Depends(prog, graph_dependency)
+ prog = install_bin(prog)
+ else:
+ #-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies
+ prog = examples_env.Program(example, ["{}.cpp".format(example), utils, gemm_tuner_common_options], CPPDEFINES=['ARM_COMPUTE_CL'], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--allow-shlib-undefined'] )
+ Depends(prog, graph_dependency)
+ prog = install_bin(prog)
alias = examples_env.Alias(example, prog)
Default(alias)
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;