From 5d42b4635f60b57a81b702d924a6e9b5b7cfbc01 Mon Sep 17 00:00:00 2001 From: Giorgio Arena Date: Fri, 26 Jul 2019 15:54:20 +0100 Subject: COMPMID-2467 Include IP information to the tuning config Change-Id: I00e29f30eda0edc76ae393bef14f0092e57a5195 Signed-off-by: Giorgio Arena Reviewed-on: https://review.mlplatform.org/c/1634 Comments-Addressed: Arm Jenkins Reviewed-by: Georgios Pinitas Tested-by: Arm Jenkins --- arm_compute/core/CL/CLKernelLibrary.h | 5 +++++ src/core/CL/CLKernelLibrary.cpp | 5 +++++ src/runtime/CL/CLTuner.cpp | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/arm_compute/core/CL/CLKernelLibrary.h b/arm_compute/core/CL/CLKernelLibrary.h index 741e47c65f..9f183f1232 100644 --- a/arm_compute/core/CL/CLKernelLibrary.h +++ b/arm_compute/core/CL/CLKernelLibrary.h @@ -297,6 +297,11 @@ public: * @return The content of CL_DEVICE_VERSION */ std::string get_device_version(); + /** Return the maximum number of compute units in the device + * + * @return The content of CL_DEVICE_MAX_COMPUTE_UNITS + */ + cl_uint get_num_compute_units(); /** Creates a kernel from the kernel library. * * @param[in] kernel_name Kernel name. diff --git a/src/core/CL/CLKernelLibrary.cpp b/src/core/CL/CLKernelLibrary.cpp index 16bcd50d06..2b843e7785 100644 --- a/src/core/CL/CLKernelLibrary.cpp +++ b/src/core/CL/CLKernelLibrary.cpp @@ -1242,3 +1242,8 @@ std::string CLKernelLibrary::get_device_version() { return _device.getInfo(); } + +cl_uint CLKernelLibrary::get_num_compute_units() +{ + return _device.getInfo(); +} \ No newline at end of file diff --git a/src/runtime/CL/CLTuner.cpp b/src/runtime/CL/CLTuner.cpp index 2c3f9ce33e..a079503671 100644 --- a/src/runtime/CL/CLTuner.cpp +++ b/src/runtime/CL/CLTuner.cpp @@ -76,11 +76,11 @@ void CLTuner::tune_kernel_static(ICLKernel &kernel) void CLTuner::tune_kernel_dynamic(ICLKernel &kernel) { - // Get the configuration ID from the kernel - const std::string &config_id = kernel.config_id(); + // Get the configuration ID from the kernel and append GPU target name and number of available compute units + const std::string config_id = kernel.config_id() + "_" + string_from_target(kernel.get_target()) + "_MP" + support::cpp11::to_string(CLKernelLibrary::get().get_num_compute_units()); - // Check if we need to find the Optimal LWS. If config_id is equal to default_config_id, the kernel does not require to be tuned - if(config_id != arm_compute::default_config_id) + // Check if we need to find the Optimal LWS. If the kernel's config_id is equal to default_config_id, the kernel does not require to be tuned + if(kernel.config_id() != arm_compute::default_config_id) { auto p = _lws_table.find(config_id); -- cgit v1.2.1