From: Hamed Gorjiara Date: Thu, 27 Sep 2018 04:23:25 +0000 (-0700) Subject: Adding a parser for parsing the output of the auto tuner X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9960fc0a4d6fe8a050e14502586e7147dd6a134d;p=Benchmarks_CSolver.git Adding a parser for parsing the output of the auto tuner --- diff --git a/sudoku-csolver/autotunerparser.py b/sudoku-csolver/autotunerparser.py index 4c49cc73..0cb6b8dc 100644 --- a/sudoku-csolver/autotunerparser.py +++ b/sudoku-csolver/autotunerparser.py @@ -1,32 +1,64 @@ import argprocessor +import re -config = {"EXECTIME": "-", +configs = {"EXECTIME": "-", "SATTIME":"-", - "PREPROCESS" : "ON", - "ELEMENTOPT" : "ON", - "ELEMENTOPTSETS" : "ON", - "PROXYVARIABLE" : "2", - "NODEENCODING" : "UNASSIGNED", - "EDGEENCODING" : "UNASSIGNED", - "EGRAPHFUDGEFACT" : "0.5", - "EGRAPHCONVERSIONFACT" : "0.5" + "PREPROCESS" : "-", + "ELEMENTOPT" : "-", + "ELEMENTOPTSETS" : "-", + "PROXYVARIABLE" : "-", + "#SubGraph" : "-", + "NODEENCODING" : "-", + "EDGEENCODING" : "-", + "NAIVEENCODER" :"-", + "ENCODINGGRAPHOPT" : "-" + } + +REGEXES = {"EXECTIME": "CSOLVER solve time: (.*)", + "SATTIME":"SAT Solving time: (.*)", + "PREPROCESS" : "Param PREPROCESS = (.*)range=\[0,1\]", + "ELEMENTOPT" : "Param ELEMENTOPT = (.*)range=\[0,1\]", + "ELEMENTOPTSETS" : "Param ELEMENTOPTSETS = (.*)range=\[0,1\]", + "PROXYVARIABLE" : "Param PROXYVARIABLE = (.*)range=\[1,5\]", + "#SubGraph" : "#SubGraph = (.*)", + "NODEENCODING" : "Param NODEENCODING = (.*)range=\[0,3\](.*)", + "EDGEENCODING" : "Param EDGEENCODING = (.*)range=\[0,2\](.*)", + "NAIVEENCODER" : "Param NAIVEENCODER = (.*)range=\[1,3\](.*)", + "ENCODINGGRAPHOPT" : "Param ENCODINGGRAPHOPT = (.*)range=\[0,1\]" + } def printHeader(file): - file.write("""EXEC TIME, SAT TIME, PREPROCESS (on/off), ELEMENTOPT (ON/OFF), ELEMENTOPTSETS (ON/OFF), - PROXYVARIABLE (1-5), NODEENCODING (BinaryIndex/Unassigned), EDGEENCODING (Match/Unmatch), FUDGEFACTOR, CONVERSIONFACTOR""") - file.write("""-, -, ON, ON, ON, - 2, UNASSIGNED, """) + global configs + mystr="" + for config in configs: + mystr+=str(config)+"," + print >>file, mystr + +def printConfig(file, data): + print data + mystr="" + for config in data: + mystr+=str(data[config])+"," + print >> file, mystr def main(): + global configs argprocess = argprocessor.AutoTunerArgParser() output = open("tuner.csv", "w") printHeader(output) with open(argprocess.getFileName()) as file: for line in file: - print line - -# print argprocess.getFileName() + if line.startswith("Mutating"): + printConfig(output,configs) + else : + for regex in REGEXES: + p = re.compile(REGEXES[regex]) + token = p.search(line) + if token is not None: + configs[regex] = re.findall("\d+\.?\d*", line)[0] + + print "Done with parsing " + argprocess.getFileName() if __name__ == "__main__": main() \ No newline at end of file