# HG changeset patch # User Nina Engelhardt # Date 1346430085 -7200 # Node ID 3adfef46f3a75feaa59372f7c50a7a4ab013af1f # Parent 078abaff1bc33e616eda42cc0f9c9c008c05a748 VSs viz done diff -r 078abaff1bc3 -r 3adfef46f3a7 .hgignore --- a/.hgignore Tue Aug 28 13:34:25 2012 +0200 +++ b/.hgignore Fri Aug 31 18:21:25 2012 +0200 @@ -4,3 +4,4 @@ counters xoanon_counters *~ +*.pyc diff -r 078abaff1bc3 -r 3adfef46f3a7 scripts/ucc_and_loop_graph_treatment/column_view.py --- a/scripts/ucc_and_loop_graph_treatment/column_view.py Tue Aug 28 13:34:25 2012 +0200 +++ b/scripts/ucc_and_loop_graph_treatment/column_view.py Fri Aug 31 18:21:25 2012 +0200 @@ -139,7 +139,7 @@ f='gray' r = sf.Rect(x1,y1* vertical_scale_factor,x2,y2* vertical_scale_factor,fill='gray') r2 = sf.Rect(x1,(y1+graph.node[node]['work_offset'])* vertical_scale_factor,x2,(y1+graph.node[node]['work_offset']+graph.node[node]['Work_end']-graph.node[node]['Work_start'])* vertical_scale_factor,fill=f, stroke_opacity=0) - s = sf.Text((x1+x2)/2 , (y1+y2)* vertical_scale_factor/2 ,str(node),text_anchor="middle",font_size=20) #str(node)+"\r\n{0}".format(graph.node[node]['cache_misses'] * (graph.node[node]['Work_end_instrs'] - graph.node[node]['Work_start_instrs'])) + s = sf.Text((x1+x2)/2 , (y1+y2)* vertical_scale_factor/2 ,str(node),text_anchor="middle",font_size=10) #str(node)+"\r\n{0}".format(graph.node[node]['cache_misses'] * (graph.node[node]['Work_end_instrs'] - graph.node[node]['Work_start_instrs'])) if graph.node[node].has_key('AssignerInvocation_start') and graph.node[node].has_key('Assigner_start'): h = graph.node[node]['Assigner_start'] - graph.node[node]['AssignerInvocation_start'] r1 = sf.Rect(x1,y1* vertical_scale_factor,x2,(y1+h)* vertical_scale_factor,fill='green',fill_opacity="70%") @@ -171,7 +171,7 @@ core2 = graph.node[b]['core'] x2 = core2 * num_cols * __column_width + offset * __column_width + 0.5 * __node_width y2 = (positioning[b] - graph.node[b]['weight']) * vertical_scale_factor - return sf.Line(x1,y1,x2,y2,style="stroke:rgb({0},{1},{2});stroke-width:2".format(int(color[0]*255),int(color[1]*255),int(color[2]*255))) + return sf.Line(x1,y1,x2,y2,style="stroke:rgb({0},{1},{2});stroke-width:1".format(int(color[0]*255),int(color[1]*255),int(color[2]*255))) diff -r 078abaff1bc3 -r 3adfef46f3a7 scripts/ucc_and_loop_graph_treatment/parse_loop_graph.py --- a/scripts/ucc_and_loop_graph_treatment/parse_loop_graph.py Tue Aug 28 13:34:25 2012 +0200 +++ b/scripts/ucc_and_loop_graph_treatment/parse_loop_graph.py Fri Aug 31 18:21:25 2012 +0200 @@ -24,16 +24,8 @@ def build_cg(loopfile,counterfile): d = read_from_file(loopfile) print "Parsed file", loopfile.name, "and found:" - if d.has_key("unit"): - print len(d["unit"]), "Units" - if d.has_key("ctlDep"): - print len(d["ctlDep"]), "Control Dependencies" - if d.has_key("commDep"): - print len(d["commDep"]), "Communication Dependencies" - if d.has_key("dynDep"): - print len(d["dynDep"]), "Dynamically chosen Dependencies" - if d.has_key("hwDep"): - print len(d["hwDep"]), "Hardware constraints" + for key in d.iterkeys(): + print len(d[key]), key+"s" g = loopgraph_from_dict(d) add_attributes_to_nodes_from_file(g,counterfile) #print nx.simple_cycles(g) @@ -42,21 +34,21 @@ #if not cont.startswith(('y','Y')): # sys.exit() lend,predd = annotate_critical_path(g, 'start', 'end') - print "Critical path length:",lend['end'] + print "Critical path length: ",lend['end'] critical_path = get_path(predd,'end') if critical_path == None: print "No path found!" nx.draw(g) else: #print "Critical path:",critical_path - print "Expected execution time:",path_length(g,critical_path),"cycles" + #print "Expected execution time:",path_length(g,critical_path),"cycles" try: actual_time = g.node['start']['tscendtime'] - g.node['start']['tscstarttime'] print "Actual execution time:", actual_time, "cycles" dif = actual_time - lend['end'] print "(Difference:", dif, "- Relative Error:", 100*float(dif)/float(lend['end']),"%)" - print g.node['start']['starttimes'] - print g.node['start']['tscstarttimes'] + #print g.node['start']['starttimes'] + #print g.node['start']['tscstarttimes'] column_view.save_computed_column_view(g,g.node['start']['numcores'],lend['end'],lend,[d["commDep"], d["dataDep"], d["ctlDep"]],"{0}.svg".format(sys.argv[1])) #column_view.save_comparative_column_view(g,g.node['start']['numcores'],max(actual_time,lend['end']),lend) #column_view.save_tsc_scale(g,g.node['start']['numcores'],lend['end']) @@ -96,30 +88,10 @@ if not d.has_key("unit"): # not key in d: d["unit"] = [] d["unit"].append( ( int(row[1]),int(row[2]) ) ) - if row[0] == "ctlDep": - if not d.has_key("ctlDep"): - d["ctlDep"] = [] - d["ctlDep"].append( ( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) ) ) - if row[0] == "commDep": - if not d.has_key("commDep"): - d["commDep"] = [] - d["commDep"].append(( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) )) - if row[0] == "dataDep": - if not d.has_key("dataDep"): - d["dataDep"] = [] - d["dataDep"].append(( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) )) - if row[0] == "dynDep": - if not d.has_key("dynDep"): - d["dynDep"] = [] - d["dynDep"].append(( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) )) - if row[0] == "singDep": - if not d.has_key("singDep"): - d["singDep"] = [] - d["singDep"].append(( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) )) - if row[0] == "hwDep": - if not d.has_key("hwDep"): - d["hwDep"] = [] - d["hwDep"].append(( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) )) + else: + if not d.has_key(row[0]): + d[row[0]] = [] + d[row[0]].append( ( (int(row[1]),int(row[2])) , (int(row[3]),int(row[4])) ) ) except Exception as e: print e continue @@ -129,18 +101,11 @@ g = nx.DiGraph() g.add_node("start") g.add_node("end") - if d.has_key("unit"): - g.add_nodes_from(d["unit"]) - if d.has_key("ctlDep"): - g.add_edges_from(d["ctlDep"]) - if d.has_key("commDep"): - g.add_edges_from(d["commDep"]) - if d.has_key("dynDep"): - g.add_edges_from(d["dynDep"]) - if d.has_key("singDep"): - g.add_edges_from(d["singDep"]) - if d.has_key("hwDep"): - g.add_edges_from(d["hwDep"]) + for key in d.iterkeys(): + if key=="unit": + g.add_nodes_from(d["unit"]) + else: + g.add_edges_from(d[key]) for node in g: if node != "start" and node != "end": if len(g.predecessors(node)) == 0: