From e1360c75a71486a0de8c1b30a2a8cd2877902416 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Wed, 31 Oct 2018 13:38:48 -0700 Subject: [PATCH 1/1] memoize timeouts --- src/Tuner/multituner.cc | 16 ++++++++++++---- src/Tuner/searchtuner.cc | 2 +- src/Tuner/staticautotuner.cc | 6 +++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Tuner/multituner.cc b/src/Tuner/multituner.cc index 5ea9800..a86b90f 100644 --- a/src/Tuner/multituner.cc +++ b/src/Tuner/multituner.cc @@ -171,7 +171,7 @@ void MultiTuner::readData(uint numRuns) { snprintf(buffer, sizeof(buffer), "result%u", i); myfile.open (buffer, ios::in); - + if (myfile.is_open()) { myfile >> metric; @@ -306,8 +306,10 @@ void MultiTuner::tuneComp() { model_print("*****************************\n"); if (metric != -1) tuner->setTime(problem, metric); + else + tuner->setTime(problem, -2); } - if (metric != -1) { + if (metric >= 0) { uint k = 0; for (; k < places.getSize(); k++) { if (metric < places.get(k)->getTime(problem)) @@ -374,9 +376,11 @@ void MultiTuner::mapProblemsToTuners(Vector *tunerV) { metric = evaluate(problem, tuner); if (metric != -1) tuner->setTime(problem, metric); + else + tuner->setTime(problem, -2); } - if ((bestTuner == NULL && metric != -1) || - (metric < bestscore && metric != -1)) { + if ((bestTuner == NULL && metric >= 0) || + (metric < bestscore && metric >= 0)) { bestTuner = tuner; bestscore = metric; } @@ -428,9 +432,13 @@ double MultiTuner::evaluateAll(TunerRecord *tuner) { metric = evaluate(problem, tuner); if (metric != -1) tuner->setTime(problem, metric); + else + tuner->setTime(problem, -2); } double score = metric; + if (metric < 0) + score = timeout; product *= score; } return pow(product, 1 / ((double)tuner->problems.getSize())); diff --git a/src/Tuner/searchtuner.cc b/src/Tuner/searchtuner.cc index b010cd5..0639281 100644 --- a/src/Tuner/searchtuner.cc +++ b/src/Tuner/searchtuner.cc @@ -99,7 +99,7 @@ SearchTuner::SearchTuner(const char *filename) { usedSettings.add(setting); } myfile.close(); - } else{ + } else { model_print("Warning: Tuner %s couldn't be loaded ... Using default tuner instead ....\n", filename); } } diff --git a/src/Tuner/staticautotuner.cc b/src/Tuner/staticautotuner.cc index 1d42932..d4c9109 100644 --- a/src/Tuner/staticautotuner.cc +++ b/src/Tuner/staticautotuner.cc @@ -13,9 +13,9 @@ StaticAutoTuner::StaticAutoTuner(uint _budget) : AutoTuner(_budget) { StaticSearchTuner *StaticAutoTuner::mutateTuner(StaticSearchTuner *oldTuner) { StaticSearchTuner *newTuner = oldTuner->copyUsed(); result = newTuner->nextStaticTuner(); - if( result == EXIT_FAILURE) { + if ( result == EXIT_FAILURE) { return newTuner; - }else { + } else { delete newTuner; return NULL; } @@ -26,7 +26,7 @@ void StaticAutoTuner::tune() { evaluateAll(oldTuner); while (true) { StaticSearchTuner *newTuner = mutateTuner(oldTuner); - if (newTuner == NULL){ + if (newTuner == NULL) { break; } double newScore = evaluateAll(newTuner); -- 2.34.1