From cda449a5c39041b2a0e6893ee254e145447b78ca Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Thu, 16 Feb 2017 21:14:48 +0100 Subject: Added a C interface to the OverrideParameters function; added some in-line comments to the API --- src/clblast.cpp | 1 + src/clblast_c.cpp | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) (limited to 'src') diff --git a/src/clblast.cpp b/src/clblast.cpp index 871a4804..a8e4d084 100644 --- a/src/clblast.cpp +++ b/src/clblast.cpp @@ -2255,6 +2255,7 @@ StatusCode FillCache(const cl_device_id device) { // ================================================================================================= +// Overrides the tuning parameters for this device-precision-kernel combination StatusCode OverrideParameters(const cl_device_id device, const std::string &kernel_name, const Precision precision, const std::unordered_map ¶meters) { diff --git a/src/clblast_c.cpp b/src/clblast_c.cpp index e4f2b3ed..79b6a640 100644 --- a/src/clblast_c.cpp +++ b/src/clblast_c.cpp @@ -12,6 +12,7 @@ // ================================================================================================= #include +#include #include "utilities/utilities.hpp" #include "clblast_c.h" @@ -3484,3 +3485,23 @@ CLBlastStatusCode CLBlastFillCache(const cl_device_id device) { } // ================================================================================================= + +// Overrides the tuning parameters for this device-precision-kernel combination +CLBlastStatusCode PUBLIC_API OverrideParameters(const cl_device_id device, const char* kernel_name, + const CLBlastPrecision precision, const size_t num_parameters, + const char** parameters_names, const size_t* parameters_values) { + try { + const auto kernel_name_cpp = std::string(kernel_name); + const auto precision_cpp = static_cast(precision); + auto parameters = std::unordered_map(); + for (auto i = size_t{0}; i < num_parameters; ++i) { + const auto parameter_name = std::string(parameters_names[i]); + const auto parameter_value = parameters_values[i]; + parameters[parameter_name] = parameter_value; + } + const auto status = clblast::OverrideParameters(device, kernel_name_cpp, precision_cpp, parameters); + return static_cast(status); + } catch (...) { return static_cast(clblast::DispatchExceptionForC()); } +} + +// ================================================================================================= -- cgit v1.2.3