From: Hamed Gorjiara Date: Thu, 21 Mar 2019 20:58:54 +0000 (-0700) Subject: commit after merge X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e5c1ee81132998d6a80d83e95f1faf2ca06ac7fb;hp=-c;p=satune.git commit after merge --- e5c1ee81132998d6a80d83e95f1faf2ca06ac7fb diff --combined src/Tuner/basictuner.cc index a2d93bf,31b4375..6f0f5e0 --- a/src/Tuner/basictuner.cc +++ b/src/Tuner/basictuner.cc @@@ -4,10 -4,10 +4,10 @@@ * and open the template in the editor. */ - /* + /* * File: basictuner.cc * Author: hamed - * + * * Created on December 17, 2018, 2:02 PM */ @@@ -38,7 -38,7 +38,7 @@@ void TunerRecord::setTime(Problem *prob timetaken.put(problem, time); } - void TunerRecord::print(){ + void TunerRecord::print() { model_print("*************TUNER NUMBER=%d***********\n", tunernumber); tuner->print(); model_print("&&&&&&&&&&&&&USED SETTINGS &&&&&&&&&&&&\n"); @@@ -46,7 -46,7 +46,7 @@@ model_print("\n"); } - void TunerRecord::printProblemsInfo(){ + void TunerRecord::printProblemsInfo() { for (uint j = 0; j < problems.getSize(); j++) { Problem *problem = problems.get(j); model_print("Problem %s\n", problem->getProblem()); @@@ -70,7 -70,7 +70,7 @@@ TunerRecord *TunerRecord::changeTuner(S BasicTuner::BasicTuner(uint _budget, uint _timeout) : - budget(_budget), timeout(_timeout), execnum(0){ + budget(_budget), timeout(_timeout), execnum(0) { } BasicTuner::~BasicTuner() { @@@ -102,10 -102,10 +102,10 @@@ void BasicTuner::printData() } } - bool BasicTuner::tunerExists(TunerRecord *tunerec){ + bool BasicTuner::tunerExists(TunerRecord *tunerec) { SearchTuner *tuner = tunerec->getTuner(); - for(uint i=0; i< explored.getSize(); i++){ - if(explored.get(i)->getTuner()->equalUsed(tuner)){ + for (uint i = 0; i < explored.getSize(); i++) { + if (explored.get(i)->getTuner()->equalUsed(tuner)) { model_print("************Tuner <%d> is replicate of Tuner <%d>\n", tunerec->getTunerNumber(), explored.get(i)->getTunerNumber()); return true; } @@@ -160,7 -160,6 +160,7 @@@ long long BasicTuner::evaluate(Problem //Do run snprintf(buffer, sizeof(buffer), "./run.sh deserializerun %s %u tuner%u result%u > log%u", problem->getProblem(), maxtime, execnum, execnum, execnum); + model_print("Running: %s\n", buffer); int status = system(buffer); long long metric = -1; @@@ -210,10 -209,10 +210,10 @@@ SearchTuner *BasicTuner::mutateTuner(Se return newTuner; } - int BasicTuner::subTunerIndex(SearchTuner *newTuner){ - for (uint i=0; i< explored.getSize(); i++){ + int BasicTuner::subTunerIndex(SearchTuner *newTuner) { + for (uint i = 0; i < explored.getSize(); i++) { SearchTuner *tuner = explored.get(i)->getTuner(); - if(tuner->isSubTunerof(newTuner)){ + if (tuner->isSubTunerof(newTuner)) { return i; } } diff --combined src/Tuner/satuner.cc index 0c405ae,4844ce3..2775081 --- a/src/Tuner/satuner.cc +++ b/src/Tuner/satuner.cc @@@ -12,28 -12,28 +12,28 @@@ SATuner::SATuner(uint _budget, uint _ti { } - SATuner::~SATuner(){ + SATuner::~SATuner() { } - void SATuner::rankTunerForProblem(Vector *places, TunerRecord *tuner, Problem *problem, long long metric){ + void SATuner::rankTunerForProblem(Vector *places, TunerRecord *tuner, Problem *problem, long long metric) { uint k = 0; for (; k < places->getSize(); k++) { if (metric < places->get(k)->getTime(problem)) break; } model_print("Problem<%s>:place[%u]=Tuner<%p,%d>\n", problem->getProblem(), k, tuner, tuner->getTunerNumber()); - places->insertAt(k, tuner); + places->insertAt(k, tuner); } - void SATuner::removeTunerIndex(Vector *tunerV, int index, Vector *> &allplaces){ + void SATuner::removeTunerIndex(Vector *tunerV, int index, Vector *> &allplaces) { TunerRecord *tuner = tunerV->get(index); model_print("Removing Tuner %d\n", tuner->getTunerNumber()); tunerV->set(index, NULL); - for(uint i=0; i < allplaces.getSize(); i++){ + for (uint i = 0; i < allplaces.getSize(); i++) { Vector *places = allplaces.get(i); - for(uint j=0; j < places->getSize(); j++){ - if(tuner == places->get(j)){ + for (uint j = 0; j < places->getSize(); j++) { + if (tuner == places->get(j)) { places->removeAt(j); break; } @@@ -42,32 -42,32 +42,32 @@@ } - void SATuner::removeNullsFromTunerVector( Vector *tunerV){ - for (int i= tunerV->getSize() -1; i >= 0; i--){ - if(tunerV->get(i) == NULL){ + void SATuner::removeNullsFromTunerVector( Vector *tunerV) { + for (int i = tunerV->getSize() - 1; i >= 0; i--) { + if (tunerV->get(i) == NULL) { tunerV->removeAt(i); } } model_print("TunerV size after removing nulls = %u\n", tunerV->getSize()); } - void SATuner::initialize(Vector *tunerV, Vector *> &allplaces){ - for(uint ii=0; ii< problems.getSize(); ii++){ + void SATuner::initialize(Vector *tunerV, Vector *> &allplaces) { + for (uint ii = 0; ii < problems.getSize(); ii++) { allplaces.push(new Vector()); } - for (uint j = 0; j< tunerV->getSize(); j++){ + for (uint j = 0; j < tunerV->getSize(); j++) { TunerRecord *tuner = tunerV->get(j); - for (uint i=0; i < problems.getSize(); i++){ + for (uint i = 0; i < problems.getSize(); i++) { Problem *problem = problems.get(i); long long metric = evaluate(problem, tuner); ASSERT(tuner->getTime(problem) == -1); tuner->addProblem(problem); - if(metric != -1){ - tuner->setTime(problem , metric); - }else{ - tuner->setTime(problem , -2); + if (metric != -1) { + tuner->setTime(problem, metric); + } else { + tuner->setTime(problem, -2); } - if(metric >=0){ + if (metric >= 0) { Vector *places = allplaces.get(i); rankTunerForProblem(places, tuner, problem, metric); } @@@ -77,27 -77,27 +77,27 @@@ } void SATuner::tune() { - Vector *tunerV = new Vector(&tuners); + Vector *tunerV = new Vector(&tuners); Vector *> allplaces; uint tunerNumber = tuners.getSize(); //Initialization initialize(tunerV, allplaces); //Starting the body of algorithm - for (uint t = budget; t >0; t--) { + for (uint t = budget; t > 0; t--) { model_print("Current Temperature = %u\n", t); Hashtable scores; for (uint i = 0; i < tunerNumber; i++) { - SearchTuner *tmpTuner = mutateTuner(tunerV->get(i)->getTuner(), budget-t); + SearchTuner *tmpTuner = mutateTuner(tunerV->get(i)->getTuner(), budget - t); int tunerIndex = subTunerIndex(tmpTuner); TunerRecord *tmp = NULL; - if(tunerIndex == -1){ + if (tunerIndex == -1) { tmp = new TunerRecord(tmpTuner); tmp->setTunerNumber(allTuners.getSize()); model_print("Mutated tuner %u to generate tuner %u\n", tunerV->get(i)->getTunerNumber(), tmp->getTunerNumber()); - allTuners.push(tmp); - }else{ + allTuners.push(tmp); + } else { //Previous tuners might get explored with new combination of tuners. - tmp = explored.get(tunerIndex); + tmp = explored.get(tunerIndex); model_print("Using exploread tuner <%u>\n", tmp->getTunerNumber()); } tunerV->push(tmp); @@@ -129,11 -129,11 +129,11 @@@ } } } - for(uint ii=0; ii < problems.getSize(); ii++){ + for (uint ii = 0; ii < problems.getSize(); ii++) { Problem *problem = problems.get(ii); ASSERT(ii < allplaces.getSize()); Vector *places = allplaces.get(ii); - int points = pow(tunerNumber*1.0, 2*tunerNumber - 1); + int points = pow(tunerNumber * 1.0, 2 * tunerNumber - 1); for (uint k = 0; k < places->getSize() && points; k++) { TunerRecord *tuner = places->get(k); int currScore = 0; @@@ -147,47 -147,38 +147,47 @@@ } } - for(uint i= 0; i < tunerNumber; i++){ + for (uint i = 0; i < tunerNumber; i++) { ASSERT(i < tunerV->getSize()); TunerRecord *tuner1 = tunerV->get(i); TunerRecord *tuner2 = tunerV->get(tunerNumber + i); ASSERT( tunerNumber + i < tunerV->getSize()); model_print("Tuner1 = %d \tTuner2 = %d\n", tuner1->getTunerNumber(), tuner2->getTunerNumber()); - ASSERT(scores.contains(tuner1)); - ASSERT(scores.contains(tuner2)); - int score1 = scores.get(tuner1); - int score2 = scores.get(tuner2); - if ( score2 > score1 ) { + + int score1, score2; + if(!scores.contains(tuner1)){ + score1 = 0; + }else { + score1 = scores.get(tuner1); + } + if(!scores.contains(tuner2)){ + score2=0; + }else { + score2= scores.get(tuner2); + } + + if( score2 > score1 ){ removeTunerIndex(tunerV, i, allplaces); - } else if( score2 < score1){ - model_print("score1=%d\tscore2=%d\tt=%u\texp=%f\n", score1, score2, t, exp((score1-score2)*1.0/t)); - double prob = 1/(exp((score1-score2)*1.0/t) ); + } else if ( score2 < score1) { + model_print("score1=%d\tscore2=%d\tt=%u\texp=%f\n", score1, score2, t, exp((score1 - score2) * 1.0 / t)); + double prob = 1 / (exp((score1 - score2) * 1.0 / t) ); double random = ((double) rand() / (RAND_MAX)); model_print("prob=%f\trandom=%f\n", prob, random); - if(prob > random){ + if (prob > random) { removeTunerIndex(tunerV, i, allplaces); - }else{ + } else { removeTunerIndex(tunerV, tunerNumber + i, allplaces); } - } else{ + } else { double random = ((double) rand() / (RAND_MAX)); - int index = random > 0.5? i : tunerNumber + i; + int index = random > 0.5 ? i : tunerNumber + i; removeTunerIndex(tunerV, index, allplaces); } } removeNullsFromTunerVector(tunerV); - + } - for(uint ii=0; ii< allplaces.getSize(); ii++){ + for (uint ii = 0; ii < allplaces.getSize(); ii++) { delete allplaces.get(ii); } printData();