From: Hamed Gorjiara Date: Fri, 17 Aug 2018 00:35:32 +0000 (-0700) Subject: Saving the best tuner settings + bug fixes X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=commitdiff_plain;h=8c035a2362d28098740c6afc16897c71e52614fd Saving the best tuner settings + bug fixes --- diff --git a/src/ASTTransform/elementopt.cc b/src/ASTTransform/elementopt.cc index 3f1f892..25de874 100755 --- a/src/ASTTransform/elementopt.cc +++ b/src/ASTTransform/elementopt.cc @@ -71,7 +71,7 @@ void ElementOpt::handlePredicateEquals(BooleanPredicate *pred, ElementSet *left, replaceVarWithConst(pred, left, right); } else if (pred->isFalse() && updateSets) { constrainVarWithConst(pred, left, right); - } else ASSERT(0); + } } void ElementOpt::handlePredicateInequality(BooleanPredicate *pred, ElementSet *var, ElementConst *value) { diff --git a/src/Tuner/autotuner.cc b/src/Tuner/autotuner.cc index 4a35fcd..e5ec2fb 100644 --- a/src/Tuner/autotuner.cc +++ b/src/Tuner/autotuner.cc @@ -102,6 +102,7 @@ void AutoTuner::tune() { } model_print("Best tuner:\n"); bestTuner->print(); + bestTuner->serialize(); model_print("Received score %f\n", bestScore); if (bestTuner != NULL) delete bestTuner; diff --git a/src/Tuner/searchtuner.cc b/src/Tuner/searchtuner.cc index a0fc1bc..6803c44 100644 --- a/src/Tuner/searchtuner.cc +++ b/src/Tuner/searchtuner.cc @@ -1,4 +1,7 @@ #include "searchtuner.h" +#include +#include +using namespace std; TunableSetting::TunableSetting(VarType _type, TunableParam _param) : hasVar(true), @@ -59,7 +62,39 @@ bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2) { setting1->param == setting2->param; } +ostream& operator<<(ostream& os, const TunableSetting& ts) +{ + os << ts.hasVar <<" " << ts.type1 <<" " << ts.type2 << " " << ts.param << " " << ts.lowValue <<" " + << ts.highValue << " " << ts.defaultValue << " " << ts.selectedValue; + return os; +} + + SearchTuner::SearchTuner() { + ifstream myfile; + myfile.open (TUNEFILE, ios::in); + if(myfile.is_open()){ + bool hasVar; + VarType type1; + VarType type2; + TunableParam param; + int lowValue; + int highValue; + int defaultValue; + int selectedValue; + while(myfile >> hasVar >> type1 >> type2 >> param >> lowValue >> highValue >> defaultValue >> selectedValue){ + TunableSetting *setting; + + if(hasVar){ + setting = new TunableSetting(type1, type2, param); + }else{ + setting = new TunableSetting(param); + } + setting->setDecision(lowValue, highValue, defaultValue, selectedValue); + usedSettings.add(setting); + } + myfile.close(); + } } SearchTuner *SearchTuner::copyUsed() { @@ -140,6 +175,18 @@ void SearchTuner::print() { } +void SearchTuner::serialize() { + ofstream myfile; + myfile.open (TUNEFILE, ios::out | ios::trunc); + SetIteratorTunableSetting *iterator = settings.iterator(); + while (iterator->hasNext()) { + TunableSetting *setting = iterator->next(); + myfile << *setting << endl; + } + myfile.close(); + delete iterator; +} + void SearchTuner::printUsed() { SetIteratorTunableSetting *iterator = usedSettings.iterator(); while (iterator->hasNext()) { diff --git a/src/Tuner/searchtuner.h b/src/Tuner/searchtuner.h index 1464849..0aabb64 100644 --- a/src/Tuner/searchtuner.h +++ b/src/Tuner/searchtuner.h @@ -3,6 +3,9 @@ #include "classlist.h" #include "tunable.h" #include "structs.h" +#include +using namespace std; +#define TUNEFILE "tune.conf" class TunableSetting { public: @@ -12,6 +15,7 @@ public: TunableSetting(TunableSetting *ts); void setDecision(int _low, int _high, int _default, int _selection); void print(); + friend std::ostream& operator<< (std::ostream& stream, const TunableSetting& matrix); CMEMALLOC; private: bool hasVar; @@ -45,7 +49,8 @@ public: uint getSize() { return usedSettings.getSize();} void print(); void printUsed(); - + void serialize(); + CMEMALLOC; private: /** Used Settings keeps track of settings that were actually used by @@ -55,4 +60,6 @@ private: /** Settings contains all settings. */ HashsetTunableSetting settings; }; + + #endif diff --git a/src/Tuner/tunable.cc b/src/Tuner/tunable.cc index a57a601..e7c2d33 100644 --- a/src/Tuner/tunable.cc +++ b/src/Tuner/tunable.cc @@ -37,6 +37,12 @@ const char* tunableParameterToString(Tunables tunable){ return "EDGEENCODING"; case MUSTEDGEPRUNE: return "MUSTEDGEPRUNE"; + case ELEMENTOPT: + return "ELEMENTOPT"; + case ELEMENTOPTSETS: + return "ELEMENTOPTSETS"; + case PROXYVARIABLE: + return "PROXYVARIABLE"; default: ASSERT(0); }