Save all data generated by autotuner pass
[satune.git] / src / Tuner / multituner.cc
index f28e781fe3c915dbef2804e018eff622ffaf6a22..3dcbacf4e22b9eee9bbb6a641f27cb72e9b40f20 100644 (file)
@@ -72,6 +72,7 @@ void MultiTuner::printData() {
 void MultiTuner::addTuner(SearchTuner *tuner) {
        TunerRecord *t = new TunerRecord(tuner);
        tuners.push(t);
+       t->tunernumber = allTuners.getSize();
        allTuners.push(t);
 }
 
@@ -90,6 +91,19 @@ long long MultiTuner::evaluate(Problem *problem, TunerRecord *tuner) {
                }
        }
 
+       {
+               snprintf(buffer, sizeof(buffer), "tunernum%u", execnum);
+
+               ofstream myfile;
+               myfile.open (buffer, ios::out);
+
+
+               if (myfile.is_open()) {
+                       myfile << tuner->tunernumber << endl;
+                       myfile.close();
+               }
+       }
+
        //Write out the tuner
        snprintf(buffer, sizeof(buffer), "tuner%u", execnum);
        tuner->getTuner()->serialize(buffer);
@@ -136,6 +150,7 @@ void MultiTuner::tuneComp() {
                for (uint i = 0; i < tSize; i++) {
                        SearchTuner *tmpTuner = mutateTuner(tunerV->get(i)->getTuner(), b);
                        TunerRecord *tmp = new TunerRecord(tmpTuner);
+                       tmp->tunernumber = allTuners.getSize();
                        allTuners.push(tmp);
                        tunerV->push(tmp);
                }
@@ -298,6 +313,7 @@ TunerRecord *MultiTuner::tune(TunerRecord *tuner) {
        for (uint i = 0; i < budget; i++) {
                SearchTuner *tmpTuner = mutateTuner(oldTuner->getTuner(), i);
                TunerRecord *newTuner = oldTuner->changeTuner(tmpTuner);
+               newTuner->tunernumber = allTuners.getSize();
                allTuners.push(newTuner);
                double newScore = evaluateAll(newTuner);
                newTuner->tuner->printUsed();