diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-08-31 20:28:01 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-08-31 20:28:01 +0200 |
commit | 54e160cd88d0a65fc72270b2414530d0dcc56ad1 (patch) | |
tree | b841817012339642b22117f42e39731f7e3b93b3 /src/tuning | |
parent | 6e95752054edc6bf49430ec40355d2aea691c32a (diff) |
Fixed some things in the tuner: bugs, style, and defaults to random search
Diffstat (limited to 'src/tuning')
-rw-r--r-- | src/tuning/kernels/xgemm.cpp | 20 | ||||
-rw-r--r-- | src/tuning/kernels/xgemm_direct.cpp | 20 | ||||
-rw-r--r-- | src/tuning/tuning.hpp | 16 |
3 files changed, 30 insertions, 26 deletions
diff --git a/src/tuning/kernels/xgemm.cpp b/src/tuning/kernels/xgemm.cpp index 02118aff..fa6b3085 100644 --- a/src/tuning/kernels/xgemm.cpp +++ b/src/tuning/kernels/xgemm.cpp @@ -42,8 +42,8 @@ class TuneXgemm { // The list of arguments relevant for this routine static std::vector<std::string> GetOptions() { return {kArgM, kArgN, kArgK, kArgAlpha, kArgBeta, kArgFraction, - kArgHeuristicSelection, kArgPsoSwarmSize, - kArgPsoInfGlobal, kArgPsoInfLocal, kArgPsoInfRandom}; + kArgHeuristicSelection, kArgPsoSwarmSize, + kArgPsoInfGlobal, kArgPsoInfLocal, kArgPsoInfRandom}; } // Tests for valid arguments @@ -60,7 +60,7 @@ class TuneXgemm { static double DefaultInfluenceGlobalPSO(){ return 0.1; } static double DefaultInfluenceLocalPSO(){ return 0.3; } static double DefaultInfluenceRandomPSO(){ return 0.6; } - static size_t DefaultHeuristic(){ return static_cast<size_t> (cltune::SearchMethod::PSO);} + static size_t DefaultHeuristic(){ return static_cast<size_t>(cltune::SearchMethod::RandomSearch); } static double DefaultMaxTempAnn(){ return 1.0;} // Describes how to obtain the sizes of the buffers @@ -180,13 +180,15 @@ class TuneXgemm { // Returns which Heuristic to run static size_t GetHeuristic(const Arguments<T> &args){ - // Use full-search to explore all parameter combinations or another strategy to search only a - // part of the parameter values. The fraction is set as a command-line argument. - if (args.fraction == 1.0 || args.fraction == 0.0) { - return static_cast<size_t> (cltune::SearchMethod::FullSearch); - } + if (V==1) { return static_cast<size_t>(cltune::SearchMethod::FullSearch); } else { - return args.heuristic_selection; + // Use full-search to explore all parameter combinations or another strategy to search only a + // part of the parameter values. The fraction is set as a command-line argument. + if (args.fraction == 1.0 || args.fraction == 0.0) { + return static_cast<size_t>(cltune::SearchMethod::FullSearch); + } else { + return args.heuristic_selection; + } } } }; diff --git a/src/tuning/kernels/xgemm_direct.cpp b/src/tuning/kernels/xgemm_direct.cpp index 90e8262b..03b40a50 100644 --- a/src/tuning/kernels/xgemm_direct.cpp +++ b/src/tuning/kernels/xgemm_direct.cpp @@ -42,8 +42,8 @@ class TuneXgemmDirect { // The list of arguments relevant for this routine static std::vector<std::string> GetOptions() { return {kArgM, kArgN, kArgK, kArgAlpha, kArgBeta, kArgFraction, - kArgHeuristicSelection, kArgPsoSwarmSize, - kArgPsoInfGlobal, kArgPsoInfLocal, kArgPsoInfRandom}; + kArgHeuristicSelection, kArgPsoSwarmSize, + kArgPsoInfGlobal, kArgPsoInfLocal, kArgPsoInfRandom}; } // Tests for valid arguments @@ -60,7 +60,7 @@ class TuneXgemmDirect { static double DefaultInfluenceGlobalPSO(){ return 0.1; } static double DefaultInfluenceLocalPSO(){ return 0.3; } static double DefaultInfluenceRandomPSO(){ return 0.6; } - static size_t DefaultHeuristic(){ return static_cast<size_t>(cltune::SearchMethod::PSO);} + static size_t DefaultHeuristic(){ return static_cast<size_t>(cltune::SearchMethod::RandomSearch);} static double DefaultMaxTempAnn(){ return 1.0;} // Describes how to obtain the sizes of the buffers @@ -177,13 +177,15 @@ class TuneXgemmDirect { // Returns which Heuristic to run static size_t GetHeuristic(const Arguments<T> &args){ - // Use full-search to explore all parameter combinations or another strategy to search only a - // part of the parameter values. The fraction is set as a command-line argument. - if (args.fraction == 1.0 || args.fraction == 0.0) { - return static_cast<size_t> (cltune::SearchMethod::FullSearch); - } + if (V==1) { return static_cast<size_t>(cltune::SearchMethod::FullSearch); } else { - return args.heuristic_selection; + // Use full-search to explore all parameter combinations or another strategy to search only a + // part of the parameter values. The fraction is set as a command-line argument. + if (args.fraction == 1.0 || args.fraction == 0.0) { + return static_cast<size_t>(cltune::SearchMethod::FullSearch); + } else { + return args.heuristic_selection; + } } } }; diff --git a/src/tuning/tuning.hpp b/src/tuning/tuning.hpp index 6a8039d2..9bb5836e 100644 --- a/src/tuning/tuning.hpp +++ b/src/tuning/tuning.hpp @@ -48,12 +48,12 @@ void Tuner(int argc, char* argv[]) { if (o == kArgBeta) { args.beta = GetArgument(command_line_args, help, kArgBeta, GetScalar<T>()); } if (o == kArgFraction) { args.fraction = GetArgument(command_line_args, help, kArgFraction, C::DefaultFraction()); } if (o == kArgBatchCount) { args.batch_count = GetArgument(command_line_args, help, kArgBatchCount, C::DefaultBatchCount()); } - if (o == kArgHeuristicSelection) {args.heuristic_selection = GetArgument(command_line_args, help, kArgHeuristicSelection, C::DefaultHeuristic()); } - if (o == kArgPsoSwarmSize) {args.pso_swarm_size = GetArgument(command_line_args, help, kArgPsoSwarmSize , C::DefaultSwarmSizePSO()); } - if (o == kArgPsoInfGlobal) {args.pso_inf_global = GetArgument(command_line_args, help, kArgPsoInfGlobal, C::DefaultInfluenceGlobalPSO()); } - if (o == kArgPsoInfLocal) {args.pso_inf_local = GetArgument(command_line_args, help, kArgPsoInfLocal, C::DefaultInfluenceLocalPSO()); } - if (o == kArgPsoInfRandom) {args.pso_inf_random = GetArgument(command_line_args, help, kArgPsoInfRandom, C::DefaultInfluenceRandomPSO()); } - if (o == kArgAnnMaxTemp) {args.ann_max_temperature = GetArgument(command_line_args, help, kArgAnnMaxTemp, C::DefaultMaxTempAnn());} + if (o == kArgHeuristicSelection) {args.heuristic_selection = GetArgument(command_line_args, help, kArgHeuristicSelection, C::DefaultHeuristic()); } + if (o == kArgPsoSwarmSize) {args.pso_swarm_size = GetArgument(command_line_args, help, kArgPsoSwarmSize , C::DefaultSwarmSizePSO()); } + if (o == kArgPsoInfGlobal) {args.pso_inf_global = GetArgument(command_line_args, help, kArgPsoInfGlobal, C::DefaultInfluenceGlobalPSO()); } + if (o == kArgPsoInfLocal) {args.pso_inf_local = GetArgument(command_line_args, help, kArgPsoInfLocal, C::DefaultInfluenceLocalPSO()); } + if (o == kArgPsoInfRandom) {args.pso_inf_random = GetArgument(command_line_args, help, kArgPsoInfRandom, C::DefaultInfluenceRandomPSO()); } + if (o == kArgAnnMaxTemp) {args.ann_max_temperature = GetArgument(command_line_args, help, kArgAnnMaxTemp, C::DefaultMaxTempAnn());} } const auto num_runs = GetArgument(command_line_args, help, kArgNumRuns, C::DefaultNumRuns()); @@ -102,9 +102,9 @@ void Tuner(int argc, char* argv[]) { auto method = C::GetHeuristic(args); if (method == 1) { tuner.UseRandomSearch(1.0/args.fraction); } - else if (method == 2) { tuner.UseAnnealing(args.fraction, args.ann_max_temperature); } + else if (method == 2) { tuner.UseAnnealing(1.0/args.fraction, args.ann_max_temperature); } else if (method == 3) { - tuner.UsePSO(args.fraction, args.pso_swarm_size, args.pso_inf_global, args.pso_inf_local, args.pso_inf_random); + tuner.UsePSO(1.0/args.fraction, args.pso_swarm_size, args.pso_inf_global, args.pso_inf_local, args.pso_inf_random); } else { tuner.UseFullSearch(); } |