removing duplicates
authorHamed Gorjiara <hgorjiar@uci.edu>
Fri, 14 Dec 2018 23:32:58 +0000 (15:32 -0800)
committerHamed Gorjiara <hgorjiar@uci.edu>
Fri, 14 Dec 2018 23:32:58 +0000 (15:32 -0800)
deploy-cs.sh
src/Tuner/randomtuner.cc
src/analyzer/tunerloganalyzer.py

index 899f6c553bdfe9d9ca4900df31fb74f4847f6030..2f41b3271e9c7cbe088b2c8f56019ab52a91c92c 100755 (executable)
@@ -17,7 +17,7 @@ cd $BASE
 rm -f $OUTFILE
 tar -czvf $OUTFILE $INFILE
 
+cp $OUTFILE $SHAREDDIR
 for SERVER in $SERVERS; do
-       cp $OUTFILE $SHAREDDIR
-       ssh $USER@$SERVER "mv $SHAREDDIR$OUTFILE $REMOTEDIR; cd $REMOTEDIR; sudo rm -r $SRC; tar -xzvf $OUTFILE; cd $SRC; make clean; ./setup.sh"
+       ssh $USER@$SERVER "cp $SHAREDDIR$OUTFILE $REMOTEDIR; cd $REMOTEDIR; sudo rm -r $SRC; tar -xzvf $OUTFILE; cd $SRC; make clean; ./setup.sh"
 done
index 67e53b8b6e83d467e9910c129b30d556c9a2303e..31561901a25943ba0707d975965db4e86bf2e841 100644 (file)
@@ -147,6 +147,7 @@ void RandomTuner::tune() {
                model_print("Round %u of %u\n", r, budget);
                for (uint i = 0; i < tuners.getSize(); i++){
                        TunerRecord *tuner = tuners.get(i);
+                       bool isNew = true;
                        for (uint j = 0; j < problems.getSize(); j++){
                                Problem *problem = problems.get(j);
                                long long metric = tuner->getTime(problem);
@@ -159,15 +160,18 @@ void RandomTuner::tune() {
                                                tuner->setTime(problem, metric);
                                        else
                                                tuner->setTime(problem, -2);
-                                       if(j == 0 && tunerExists(tuner->getTuner())){
+                                       if(tunerExists(tuner->getTuner())){
                                                //Solving the first problem and noticing the tuner
                                                //already exists
+                                               isNew = false;
                                                break;
-                                       } else if(j == 0 && !tunerExists(tuner->getTuner())){
-                                               explored.push(tuner);
                                        }
                                }
                        }
+                       if(isNew){
+                               explored.push(tuner);
+                       }
+                       
                }
                uint tSize = tuners.getSize();
                for (uint i = 0; i < tSize; i++) {
index 92a0912dd80fef90d5834cd44f8b6fb72686ed59..24176217ba747e762266b24e7a202393fd1eabfb 100644 (file)
@@ -17,6 +17,8 @@ class AutoTunerArgParser:
        def getRunNumber(self):
                return self.args.number[0]
 
+PROBLEMS = []
+
 TUNABLEHEADER = ["DECOMPOSEORDER", "MUSTREACHGLOBAL", "MUSTREACHLOCAL", "MUSTREACHPRUNE", "OPTIMIZEORDERSTRUCTURE",
                 "ORDERINTEGERENCODING", "PREPROCESS", "NODEENCODING", "EDGEENCODING", "MUSTEDGEPRUNE", "ELEMENTOPT",
                 "ENCODINGGRAPHOPT", "ELEMENTOPTSETS", "PROXYVARIABLE", "MUSTVALUE", "NAIVEENCODER", "VARIABLEORDER",
@@ -89,8 +91,16 @@ def loadSolverTime(row, filename):
        row["EXECTIME"] = configs["EXECTIME"]
 
 def loadProblemName(row,filename):
+       global PROBLEMS
        with open(filename) as f:
-               row["PROBLEM"] = f.readline().replace("\n","")
+               problem = f.readline().replace("\n","")
+               probNumber = int(f.readline())
+               if probNumber >= len(PROBLEMS):
+                       PROBLEMS.insert(probNumber,problem)
+               elif PROBLEMS[probNumber] != problem:
+                       PROBLEMS[probNumber] = problem
+               row["PROBLEM"] = problem
+
 def loadTunerNumber(row, filename):
        with open(filename) as f:
                row["TUNERNUMBER"] = f.readline().replace("\n","")
@@ -132,6 +142,7 @@ def analyzeLogs(file):
 
 def tunerCountAnalysis(file, rows):
        global TUNABLEHEADER
+       global PROBLEMS
        tunercount = {}
        tunernumber = {}
        for row in rows:
@@ -154,11 +165,24 @@ def tunerCountAnalysis(file, rows):
                if tunercount[key] > 1:
                        print key + "(ids:" + tunernumber[key]  + ") = #" + str(tunercount[key])
 
+def combineRowForEachTuner(rows):
+       global PROBLEMS
+       newRows = []
+       combined = None
+       for row in rows:
+               if row["PROBLEM"] == PROBLEMS[0]:
+                       combined = row
+               for key in row:
+                       if row[key]:
+                               combined[key] = row[key]
+               if row["PROBLEM"] == PROBLEMS[len(PROBLEMS)-1]:
+                       newRows.append(combined)
+       return newRows
 
 def main():
        file = open("tuner.csv", "w")
        rows = analyzeLogs(file)
-       tunerCountAnalysis(file, rows)
+       tunerCountAnalysis(file, combineRowForEachTuner(rows) )
        file.close()
        return