summaryrefslogtreecommitdiff
path: root/src/tuning/routines
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-11-02 21:47:14 +0100
committerCedric Nugteren <web@cedricnugteren.nl>2017-11-02 21:47:14 +0100
commit9b0a435fb00b845b875590be90acffcd4f3bb009 (patch)
tree754b523789ef717619b540925c97e7167ba28f06 /src/tuning/routines
parent73272ab97dbd5abe757f6558c9b89665c5ac99d0 (diff)
Integrated the GEMM routine tuner for kernel selection; added first tuning results
Diffstat (limited to 'src/tuning/routines')
-rw-r--r--src/tuning/routines/xgemm.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/tuning/routines/xgemm.cpp b/src/tuning/routines/xgemm.cpp
index 1ccaa0ca..f45e8635 100644
--- a/src/tuning/routines/xgemm.cpp
+++ b/src/tuning/routines/xgemm.cpp
@@ -42,7 +42,7 @@ void RunGemmRoutine(const size_t value, const Queue& queue, const std::vector<Bu
template <typename T>
void ForceSelectIndirectFrom(const size_t minimum_size, const Device &device) {
- const auto override_status = OverrideParameters(device(), "KernelSelection", PrecisionValue<T>(),
+ const auto override_status = OverrideParameters(device(), "GemmRoutine", PrecisionValue<T>(),
{{"XGEMM_MIN_INDIRECT_SIZE", minimum_size}});
if (override_status != StatusCode::kSuccess) {
throw RuntimeError("OverrideParameters failed with status " + ToString(override_status));
@@ -61,7 +61,7 @@ void TuneXgemm(int argc, char* argv[]) {
// Values for m, n, and k
const auto from = size_t{64};
- const auto to = size_t{1024};
+ const auto to = size_t{2048};
const auto step = size_t{64};
// OpenCL initialisation
@@ -106,7 +106,10 @@ void TuneXgemm(int argc, char* argv[]) {
scores[i] = TuningResult{
"gemm_kernel_selection",
static_cast<double>(score) / static_cast<double>(scores.size() - 1) + epsilon,
- TuningParameters{TuningParameter{"XGEMM_MIN_INDIRECT_SIZE", indirect[i].first}}
+ TuningParameters{
+ TuningParameter{"XGEMM_MIN_INDIRECT_SIZE", indirect[i].first},
+ TuningParameter{"PRECISION", static_cast<size_t>(precision)}
+ }
};
}
@@ -126,11 +129,15 @@ void TuneXgemm(int argc, char* argv[]) {
const auto precision_string = std::to_string(static_cast<size_t>(precision));
auto metadata = std::vector<std::pair<std::string,std::string>>{
{"kernel_family", "gemm_routine"},
+ {"arg_from", ToString(from)},
+ {"arg_to", ToString(to)},
+ {"arg_step", ToString(step)},
{"precision", precision_string},
};
PrintTimingsToFileAsJSON("clblast_routine_gemm_" + precision_string + ".json",
device, platform, metadata, scores);
+ printf("[ STATUS ] All done\n");
}
// =================================================================================================