From 6397e6174696b1a2ac6f4f0698e0f67e48891721 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Fri, 9 Mar 2018 21:40:22 +0100 Subject: Added several more tuner API functions --- src/tuning/tuning_api.cpp | 126 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 114 insertions(+), 12 deletions(-) (limited to 'src/tuning/tuning_api.cpp') diff --git a/src/tuning/tuning_api.cpp b/src/tuning/tuning_api.cpp index 94a9a367..61cb0389 100644 --- a/src/tuning/tuning_api.cpp +++ b/src/tuning/tuning_api.cpp @@ -26,23 +26,125 @@ namespace clblast { // ================================================================================================= template -StatusCode TuneCopyMatrixFast(RawCommandQueue * queue, const size_t m, const size_t n, - const double fraction, std::unordered_map ¶meters) { - auto args = Arguments(); - args.m = m; - args.n = n; - args.fraction = fraction; +StatusCode TuneXaxpy(RawCommandQueue * queue, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.n = n; auto queue_cpp = Queue(*queue); return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, TestValidArguments, SetConstraints, SetArguments, parameters); } +template StatusCode TuneXaxpy(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXaxpy(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXaxpy(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXaxpy(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXaxpy(RawCommandQueue*, const size_t, const double, std::unordered_map&); -// Compiles the above -template StatusCode TuneCopyMatrixFast(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); -template StatusCode TuneCopyMatrixFast(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); -template StatusCode TuneCopyMatrixFast(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); -template StatusCode TuneCopyMatrixFast(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); -template StatusCode TuneCopyMatrixFast(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template +StatusCode TuneXdot(RawCommandQueue * queue, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.n = n; + auto queue_cpp = Queue(*queue); + auto status = TunerAPI(queue_cpp, args, 1, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); + if (status != StatusCode::kSuccess) { return status; } + return TunerAPI(queue_cpp, args, 2, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TuneXdot(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXdot(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXdot(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXdot(RawCommandQueue*, const size_t, const double, std::unordered_map&); +template StatusCode TuneXdot(RawCommandQueue*, const size_t, const double, std::unordered_map&); + +template +StatusCode TuneXgemv(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + auto status = TunerAPI(queue_cpp, args, 1, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); + if (status != StatusCode::kSuccess) { return status; } + status = TunerAPI(queue_cpp, args, 2, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); + if (status != StatusCode::kSuccess) { return status; } + return TunerAPI(queue_cpp, args, 3, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TuneXgemv(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXgemv(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXgemv(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXgemv(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXgemv(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); + +template +StatusCode TuneXger(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TuneXger(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXger(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXger(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXger(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneXger(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); + +template +StatusCode TuneCopy(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TuneCopy(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneCopy(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneCopy(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneCopy(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneCopy(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); + +template +StatusCode TunePad(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TunePad(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePad(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePad(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePad(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePad(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); + +template +StatusCode TuneTranspose(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TuneTranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneTranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneTranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneTranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TuneTranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); + +template +StatusCode TunePadtranspose(RawCommandQueue * queue, const size_t m, const size_t n, + const double fraction, std::unordered_map ¶meters) { + auto args = Arguments(); args.fraction = fraction; args.m = m; args.n = n; + auto queue_cpp = Queue(*queue); + return TunerAPI(queue_cpp, args, 0, GetTunerDefaults, GetTunerSettings, + TestValidArguments, SetConstraints, SetArguments, parameters); +} +template StatusCode TunePadtranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePadtranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePadtranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePadtranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); +template StatusCode TunePadtranspose(RawCommandQueue*, const size_t, const size_t, const double, std::unordered_map&); // ================================================================================================= -- cgit v1.2.3