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