From 34ba8a7da2ea48c2fc835985eee27bf2cd3e64db Mon Sep 17 00:00:00 2001 From: Hamed Gorjiara Date: Thu, 28 Mar 2019 21:10:45 -0700 Subject: [PATCH] Adding settings to usedsettings when tuner hits timeout --- src/Tuner/basictuner.cc | 3 +++ src/Tuner/searchtuner.cc | 13 +++++++++++-- src/Tuner/searchtuner.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Tuner/basictuner.cc b/src/Tuner/basictuner.cc index 8ec104c..7d08098 100644 --- a/src/Tuner/basictuner.cc +++ b/src/Tuner/basictuner.cc @@ -182,7 +182,10 @@ long long BasicTuner::evaluate(Problem *problem, TunerRecord *tuner) { updateTimeout(problem, metric); snprintf(buffer, sizeof(buffer), "tuner%uused", execnum); tuner->getTuner()->addUsed(buffer); + } else if (status == 124 << 8){ // timeout happens ... + tuner->getTuner()->copySettingstoUsedSettings(); } + //Increment execution count execnum++; diff --git a/src/Tuner/searchtuner.cc b/src/Tuner/searchtuner.cc index 3cf94fb..582de74 100644 --- a/src/Tuner/searchtuner.cc +++ b/src/Tuner/searchtuner.cc @@ -175,8 +175,7 @@ bool SearchTuner::isSubTunerof(SearchTuner *newTuner) { SearchTuner *SearchTuner::copyUsed() { SearchTuner *tuner = new SearchTuner(); - - SetIteratorTunableSetting *iterator = !usedSettings.isEmpty()? usedSettings.iterator():settings.iterator(); + SetIteratorTunableSetting *iterator = usedSettings.iterator(); while (iterator->hasNext()) { TunableSetting *setting = iterator->next(); TunableSetting *copy = new TunableSetting(setting); @@ -186,6 +185,16 @@ SearchTuner *SearchTuner::copyUsed() { return tuner; } +void SearchTuner::copySettingstoUsedSettings() { + SetIteratorTunableSetting *iterator = settings.iterator(); + while (iterator->hasNext()) { + TunableSetting *setting = iterator->next(); + TunableSetting *copy = new TunableSetting(setting); + usedSettings.add(copy); + } + delete iterator; +} + SearchTuner::~SearchTuner() { SetIteratorTunableSetting *iterator = settings.iterator(); while (iterator->hasNext()) { diff --git a/src/Tuner/searchtuner.h b/src/Tuner/searchtuner.h index 9d5913b..dbac07f 100644 --- a/src/Tuner/searchtuner.h +++ b/src/Tuner/searchtuner.h @@ -43,6 +43,7 @@ public: void setVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor, uint value); void setVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor, uint value); SearchTuner *copyUsed(); + void copySettingstoUsedSettings(); bool isSubTunerof(SearchTuner *newTuner); void randomMutate(); uint getSize() { return usedSettings.getSize();} -- 2.34.1