X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2Fanalyzer%2Ftunerloganalyzer.py;h=d47df1f41c2e5eb88d2e09cb13c725324c4760f1;hp=8f8f39594e483d4e5286d8ce947d668e38b98f82;hb=7814370d6636d977456df04aa4e68b40f70b3e43;hpb=9e62a28ca34fac2879e180633f3bb63077c1d333 diff --git a/src/analyzer/tunerloganalyzer.py b/src/analyzer/tunerloganalyzer.py index 8f8f395..d47df1f 100644 --- a/src/analyzer/tunerloganalyzer.py +++ b/src/analyzer/tunerloganalyzer.py @@ -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", @@ -92,8 +94,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","") @@ -134,14 +144,18 @@ def analyzeLogs(file): rows.append(row) return rows, data -def tunerNumberAnalysis(file, rows): +def tunerCountAnalysis(file, rows): global TUNABLEHEADER + global PROBLEMS tunercount = {} tunernumber = {} for row in rows: mystr="" for i in range(18): - mystr+=row[TUNABLEHEADER[i]] + if not row[TUNABLEHEADER[i]]: + mystr += "." + else: + mystr+=row[TUNABLEHEADER[i]] if mystr not in tunercount: tunercount.update({mystr : 1}) tunernumber.update({mystr : str(row["TUNERNUMBER"])}) @@ -153,19 +167,35 @@ def tunerNumberAnalysis(file, rows): print ("Number of repititive tuners") for key in tunercount: if tunercount[key] > 1: - print (key + "(ids:" + tunernumber[key] + ") = #" + str(tunercount[key])) + 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 transformDataset(rows): print(rows) + + def main(): global TUNABLEHEADER file = open("tuner.csv", "w") rows, data = analyzeLogs(file) - tunerNumberAnalysis(file, rows) + tunerCountAnalysis(file, combineRowForEachTuner(rows) ) file.close() #transformDataset(data) pl.plot(data, TUNABLEHEADER) - return + if __name__ == "__main__": main()