1 | |
---|
2 | individual_metrics = [ 'req_trig_update', 'local_update', 'remote_update', 'update_cost', 'req_trig_m_inv', 'local_m_inv', 'remote_m_inv', 'm_inv_cost', 'broadcast', 'total_update', 'total_m_inv' ] |
---|
3 | |
---|
4 | grouped_metrics = [ 'update_cost', 'm_inv_cost' ] |
---|
5 | |
---|
6 | stacked_metrics = [ 'nonwrite_broadcast', 'write_broadcast', 'local_m_inv', 'remote_m_inv', 'local_update', 'remote_update' ] |
---|
7 | |
---|
8 | m_prot_name = {} |
---|
9 | m_prot_name['dhccp'] = "DHCCP" |
---|
10 | m_prot_name['rwt'] = "RWT" |
---|
11 | m_prot_name['mesi'] = "HMESI" |
---|
12 | |
---|
13 | m_app_name = {} |
---|
14 | m_app_name['mandel'] = "Mandelbrot" |
---|
15 | m_app_name['filter'] = "Filter" |
---|
16 | m_app_name['filt_ga'] = "Filter (opt.)" |
---|
17 | m_app_name['histogram'] = "Histogram" |
---|
18 | m_app_name['kmeans'] = "Kmeans" |
---|
19 | m_app_name['pca'] = "PCA" |
---|
20 | m_app_name['mat_mult'] = "Matrix Mult." |
---|
21 | m_app_name['barnes'] = "Barnes" |
---|
22 | m_app_name['fmm'] = "FMM" |
---|
23 | m_app_name['ocean'] = "Ocean" |
---|
24 | m_app_name['raytrace'] = "Raytrace" |
---|
25 | m_app_name['radiosity'] = "Radiosity" |
---|
26 | m_app_name['waters'] = "Water Sp." |
---|
27 | m_app_name['watern'] = "Water Nsq." |
---|
28 | m_app_name['cholesky'] = "Cholesky" |
---|
29 | m_app_name['lu'] = "LU" |
---|
30 | m_app_name['fft'] = "FFT" |
---|
31 | m_app_name['radix'] = "Radix" |
---|
32 | m_app_name['fft_ga'] = "FFT (opt.)" |
---|
33 | m_app_name['radix_ga'] = "Radix (opt.)" |
---|
34 | |
---|
35 | m_metric_id = {} |
---|
36 | m_metric_tag = {} |
---|
37 | m_metric_tag['counter_reset'] = "[000]" |
---|
38 | m_metric_tag['ncycles'] = "[001]" |
---|
39 | |
---|
40 | m_metric_tag['local_read'] = "[010]" |
---|
41 | m_metric_tag['remote_read'] = "[011]" |
---|
42 | m_metric_tag['read_cost'] = "[012]" |
---|
43 | |
---|
44 | m_metric_tag['local_write'] = "[020]" |
---|
45 | m_metric_tag['remote_write'] = "[021]" |
---|
46 | m_metric_tag['write_flits_local'] = "[022]" |
---|
47 | m_metric_tag['write_flits_remote'] = "[023]" |
---|
48 | m_metric_tag['write_cost'] = "[024]" |
---|
49 | m_metric_tag['write_l1_miss_ncc'] = "[025]" |
---|
50 | |
---|
51 | m_metric_tag['local_ll'] = "[030]" |
---|
52 | m_metric_tag['remote_ll'] = "[031]" |
---|
53 | m_metric_tag['ll_cost'] = "[032]" |
---|
54 | |
---|
55 | m_metric_tag['local_sc'] = "[040]" |
---|
56 | m_metric_tag['remote_sc'] = "[041]" |
---|
57 | m_metric_tag['sc_cost'] = "[042]" |
---|
58 | |
---|
59 | m_metric_tag['local_cas'] = "[050]" |
---|
60 | m_metric_tag['remote_cas'] = "[051]" |
---|
61 | m_metric_tag['cas_cost'] = "[052]" |
---|
62 | |
---|
63 | m_metric_tag['req_trig_update'] = "[060]" |
---|
64 | m_metric_tag['local_update'] = "[061]" |
---|
65 | m_metric_tag['remote_update'] = "[062]" |
---|
66 | m_metric_tag['update_cost'] = "[063]" |
---|
67 | |
---|
68 | m_metric_tag['req_trig_m_inv'] = "[070]" |
---|
69 | m_metric_tag['local_m_inv'] = "[071]" |
---|
70 | m_metric_tag['remote_m_inv'] = "[072]" |
---|
71 | m_metric_tag['m_inv_cost'] = "[073]" |
---|
72 | |
---|
73 | m_metric_tag['broadcast'] = "[080]" |
---|
74 | m_metric_tag['write_broadcast'] = "[081]" |
---|
75 | m_metric_tag['getm_broadcast'] = "[082]" |
---|
76 | |
---|
77 | m_metric_tag['local_cleanup'] = "[090]" |
---|
78 | m_metric_tag['remote_cleanup'] = "[091]" |
---|
79 | m_metric_tag['cleanup_cost'] = "[092]" |
---|
80 | m_metric_tag['local_cleanup_d'] = "[093]" |
---|
81 | m_metric_tag['remote_cleanup_d'] = "[094]" |
---|
82 | m_metric_tag['cleanup_d_cost'] = "[095]" |
---|
83 | |
---|
84 | m_metric_tag['read_miss'] = "[100]" |
---|
85 | m_metric_tag['write_miss'] = "[101]" |
---|
86 | m_metric_tag['write_dirty'] = "[102]" |
---|
87 | m_metric_tag['getm_miss'] = "[103]" |
---|
88 | |
---|
89 | m_metric_tag['read_hit_trt'] = "[110]" # Reads blocked by a hit in the TRT |
---|
90 | m_metric_tag['trans_full_trt'] = "[111]" # Transactions blocked because the TRT is full |
---|
91 | m_metric_tag['put'] = "[120]" |
---|
92 | m_metric_tag['get'] = "[121]" |
---|
93 | m_metric_tag['min_heap_slots_av'] = "[130]" |
---|
94 | |
---|
95 | m_metric_tag['ncc_to_cc_read'] = "[140]" |
---|
96 | m_metric_tag['ncc_to_cc_write'] = "[141]" |
---|
97 | |
---|
98 | m_metric_tag['local_getm'] = "[150]" |
---|
99 | m_metric_tag['remote_getm'] = "[151]" |
---|
100 | m_metric_tag['getm_cost'] = "[152]" |
---|
101 | |
---|
102 | m_metric_tag['local_inval_ro'] = "[160]" |
---|
103 | m_metric_tag['remote_inval_ro'] = "[161]" |
---|
104 | m_metric_tag['inval_ro_cost'] = "[162]" |
---|
105 | |
---|
106 | |
---|
107 | |
---|
108 | all_metrics = m_metric_tag.keys() |
---|
109 | all_tags = m_metric_tag.values() |
---|
110 | |
---|
111 | m_metric_name = {} |
---|
112 | m_metric_name['counter_reset'] = "Counters reset at cycle" |
---|
113 | m_metric_name['ncycles'] = "Number of Cycles" |
---|
114 | |
---|
115 | m_metric_name['local_read'] = "Number of Local Reads (Miss in L1)" |
---|
116 | m_metric_name['remote_read'] = "Number of Remote Reads (Miss in L1)" |
---|
117 | m_metric_name['read_cost'] = "Read Cost" |
---|
118 | |
---|
119 | m_metric_name['local_write'] = "Number of Local Writes" |
---|
120 | m_metric_name['remote_write'] = "Number of Remote Writes" |
---|
121 | m_metric_name['write_flits_local'] = "Number of Local Write Flits" |
---|
122 | m_metric_name['write_flits_remote'] = "Number of Remote Write Flits" |
---|
123 | m_metric_name['write_cost'] = "Write Cost" |
---|
124 | |
---|
125 | m_metric_name['local_ll'] = "Number of Local LL" |
---|
126 | m_metric_name['remote_ll'] = "Number of Remote LL" |
---|
127 | m_metric_name['ll_cost'] = "LL Cost" |
---|
128 | |
---|
129 | m_metric_name['local_sc'] = "Number of Local SC" |
---|
130 | m_metric_name['remote_sc'] = "Number of Remote SC" |
---|
131 | m_metric_name['sc_cost'] = "SC Cost" |
---|
132 | |
---|
133 | m_metric_name['local_cas'] = "Number of Local CAS" |
---|
134 | m_metric_name['remote_cas'] = "Number of Remote CAS" |
---|
135 | m_metric_name['cas_cost'] = "CAS Cost" |
---|
136 | |
---|
137 | m_metric_name['req_trig_update'] = "Number of Requests Triggering an Update" |
---|
138 | m_metric_name['local_update'] = "Number of Local Updates" |
---|
139 | m_metric_name['remote_update'] = "Number of Remote Updates" |
---|
140 | m_metric_name['update_cost'] = "Update Cost" |
---|
141 | |
---|
142 | m_metric_name['req_trig_m_inv'] = "Number of Requests Triggering a M.inv" |
---|
143 | m_metric_name['local_m_inv'] = "Number of Local Multi Inval" |
---|
144 | m_metric_name['remote_m_inv'] = "Number of Remote Multi Inval" |
---|
145 | m_metric_name['m_inv_cost'] = "Multi Inval Cost" |
---|
146 | |
---|
147 | m_metric_name['broadcast'] = "Total Number of Broadcasts" |
---|
148 | m_metric_name['write_broadcast'] = "Number of Broadcasts Trig. by Writes" |
---|
149 | m_metric_name['nonwrite_broadcast'] = "Number of Broadcasts not Trig. by Writes" |
---|
150 | m_metric_name['getm_broadcast'] = "Number of Broadcasts Trig. by GetM" |
---|
151 | |
---|
152 | m_metric_name['local_cleanup'] = "Number of Local Cleanups" |
---|
153 | m_metric_name['remote_cleanup'] = "Number of Remote Cleanups" |
---|
154 | m_metric_name['cleanup_cost'] = "Cleanup Cost" |
---|
155 | m_metric_name['local_cleanup_d'] = "Number of Local Cleanups with Data" |
---|
156 | m_metric_name['remote_cleanup_d'] = "Number of Remote Cleanups with Data" |
---|
157 | m_metric_name['cleanup_d_cost'] = "Cleanup with Data Cost" |
---|
158 | |
---|
159 | m_metric_name['read_miss'] = "Number of Read Miss (in L2)" |
---|
160 | m_metric_name['write_miss'] = "Number of Write Miss (in L2)" |
---|
161 | m_metric_name['write_dirty'] = "Number of Write Dirty (from L2 to Memory)" |
---|
162 | m_metric_name['getm_miss'] = "Number of GetM Miss (in L2)" |
---|
163 | |
---|
164 | m_metric_name['read_hit_trt'] = "Number of Reads Blocked by a Hit in TRT" # Reads blocked by a hit in the TRT |
---|
165 | m_metric_name['trans_full_trt'] = "Number of Transactions Blocked because the TRT is Full" # Transactions blocked because the TRT is full |
---|
166 | m_metric_name['put'] = "Number of PUT to Memory" |
---|
167 | m_metric_name['get'] = "Number of GET from Memory" |
---|
168 | m_metric_name['min_heap_slots_av'] = "Minimum Number of Heap Slots available" |
---|
169 | |
---|
170 | m_metric_name['ncc_to_cc_read'] = "Number or Reads trig. NCC to CC" |
---|
171 | m_metric_name['ncc_to_cc_write'] = "Number of Writes trig. NCC to CC" |
---|
172 | |
---|
173 | m_metric_name['local_getm'] = "Number of Local GetM" |
---|
174 | m_metric_name['remote_getm'] = "Number of Remote GetM" |
---|
175 | m_metric_name['getm_cost'] = "GetM Cost" |
---|
176 | |
---|
177 | m_metric_name['local_inval_ro'] = "Number of Local Inval RO" |
---|
178 | m_metric_name['remote_inval_ro'] = "Number of Remote Inval RO" |
---|
179 | m_metric_name['inval_ro_cost'] = "Inval RO Cost" |
---|
180 | |
---|
181 | |
---|
182 | m_metric_name['total_read'] = "Total Number of Reads" |
---|
183 | m_metric_name['total_write'] = "Total Number of Writes" |
---|
184 | m_metric_name['total_ll'] = "Total Number of LL" |
---|
185 | m_metric_name['total_sc'] = "Total Number of SC" |
---|
186 | m_metric_name['total_cas'] = "Total Number of CAS" |
---|
187 | m_metric_name['total_update'] = "Total Number of Updates" |
---|
188 | m_metric_name['total_m_inv'] = "Total Number of Multi Inval" |
---|
189 | m_metric_name['total_cleanup'] = "Total Number of Cleanups" |
---|
190 | m_metric_name['total_cleanup_d'] = "Total Number of Cleanups with Data" |
---|
191 | m_metric_name['total_direct'] = "Total Number of Direct Requests" |
---|
192 | m_metric_name['total_ncc_to_cc'] = "Total Number of NCC to CC Changes" |
---|
193 | m_metric_name['broadcast_cost'] = "Broadcast Cost" |
---|
194 | m_metric_name['direct_cost'] = "Direct Requests Cost" |
---|
195 | m_metric_name['total_stacked'] = "??" # Normalization factor, does not have a name (unused) |
---|
196 | |
---|
197 | |
---|
198 | |
---|
199 | m_metric_norm = {} # "N" (None), P (#procs), C (#cycles), W (#writes), R (#reads), D (#direct req -- R ou W), n (value with n proc(s)) |
---|
200 | m_metric_norm['req_trig_update'] = "C" |
---|
201 | m_metric_norm['local_update'] = "C" |
---|
202 | m_metric_norm['remote_update'] = "C" |
---|
203 | m_metric_norm['update_cost'] = "C" |
---|
204 | m_metric_norm['req_trig_m_inv'] = "C" |
---|
205 | m_metric_norm['local_m_inv'] = "C" |
---|
206 | m_metric_norm['remote_m_inv'] = "C" |
---|
207 | m_metric_norm['m_inv_cost'] = "C" |
---|
208 | m_metric_norm['broadcast'] = "C" |
---|
209 | m_metric_norm['total_update'] = "C" |
---|
210 | m_metric_norm['total_m_inv'] = "C" |
---|
211 | |
---|
212 | m_norm_factor_name = {} |
---|
213 | m_norm_factor_name['N'] = "" |
---|
214 | m_norm_factor_name['P'] = "Normalized w.r.t.\\nthe Number of Processors" |
---|
215 | m_norm_factor_name['C'] = "Normalized w.r.t.\\nthe Number of Cycles (x 1000)" |
---|
216 | m_norm_factor_name['W'] = "Normalized w.r.t.\\nthe Number of Writes" |
---|
217 | m_norm_factor_name['R'] = "Normalized w.r.t.\\nthe Number of Reads" |
---|
218 | m_norm_factor_name['D'] = "Normalized w.r.t.\\nthe Number of Direct Requests" |
---|
219 | m_norm_factor_name['1'] = "Normalized w.r.t.\\nthe Value on 1 Processor" |
---|
220 | m_norm_factor_name['4'] = "Normalized w.r.t.\\nthe Value on 4 Processors" |
---|
221 | m_norm_factor_name['8'] = "Normalized w.r.t.\\nthe Value on 8 Processors" |
---|
222 | m_norm_factor_name['16'] = "Normalized w.r.t.\\nthe Value on 16 Processors" |
---|
223 | m_norm_factor_name['32'] = "Normalized w.r.t.\\nthe Value on 32 Processors" |
---|
224 | m_norm_factor_name['64'] = "Normalized w.r.t.\\nthe Value on 64 Processors" |
---|
225 | m_norm_factor_name['128'] = "Normalized w.r.t.\\nthe Value on 128 Processors" |
---|
226 | m_norm_factor_name['256'] = "Normalized w.r.t.\\nthe Value on 256 Processors" |
---|
227 | |
---|
228 | |
---|
229 | |
---|
230 | colors = [ "\"#008000\"", "\"#000080\"", "\"#BADC98\"", "\"#BA98DC\"", "\"#98DCBA\"", "\"#98BADC\"", "\"#BA9876\"", "\"#BA7698\"", "\"#98BA76\"", "\"#9876BA\"", "\"#76BA98\"", "\"#7698BA\"" ] |
---|
231 | |
---|
232 | |
---|