diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-02-16 21:14:48 +0100 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-02-16 21:14:48 +0100 |
commit | cda449a5c39041b2a0e6893ee254e145447b78ca (patch) | |
tree | 3b4f18b497df26960dd72dd297a80421861e2a53 /src | |
parent | 08bfb75a9d72b6b373d8f18e8be83fe4ea31015b (diff) |
Added a C interface to the OverrideParameters function; added some in-line comments to the API
Diffstat (limited to 'src')
-rw-r--r-- | src/clblast.cpp | 1 | ||||
-rw-r--r-- | src/clblast_c.cpp | 21 |
2 files changed, 22 insertions, 0 deletions
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<std::string,size_t> ¶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 <string> +#include <unordered_map> #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<clblast::Precision>(precision); + auto parameters = std::unordered_map<std::string, size_t>(); + 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<CLBlastStatusCode>(status); + } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); } +} + +// ================================================================================================= |