memoize timeouts
authorbdemsky <bdemsky@uci.edu>
Wed, 31 Oct 2018 20:38:48 +0000 (13:38 -0700)
committerbdemsky <bdemsky@uci.edu>
Wed, 31 Oct 2018 20:38:48 +0000 (13:38 -0700)
src/Tuner/multituner.cc
src/Tuner/searchtuner.cc
src/Tuner/staticautotuner.cc

index 5ea98005a0df9494e5dfa0e5f7dfbd4ced937929..a86b90fb52c517d36c581655c439e46623947bf1 100644 (file)
@@ -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<TunerRecord *> *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()));
index b010cd52f1a01b3beab888a3eea3e2312f21d182..0639281bd28c491d16b3ff4ae56bbafe83f016da 100644 (file)
@@ -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);
        }
 }
index 1d42932631779fdabdda705254ebb4d7dbc8b189..d4c91096e83a6aed8b3b39f4f7119568b47ab1c7 100644 (file)
@@ -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);