Skip to content
This repository was archived by the owner on May 11, 2023. It is now read-only.

Commit 763284f

Browse files
author
Ananda Samajdar
committed
Source files for upstreaming
1 parent e1434c0 commit 763284f

File tree

95 files changed

+3036
-64
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+3036
-64
lines changed

clean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
rm -rf *.csv
2+

run_nets.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ def run_net( ifmap_sram_size=1,
1010
array_w=32,
1111
data_flow = 'os',
1212
topology_file = './topologies/yolo_v2.csv',
13-
net_name='yolo_v2'
13+
net_name='yolo_v2',
14+
offset_list = [0, 10000000, 20000000]
1415
):
1516

1617
ifmap_sram_size *= 1024
@@ -29,9 +30,21 @@ def run_net( ifmap_sram_size=1,
2930
f3name = net_name + "_cycles.csv"
3031
cycl = open(f3name, 'w')
3132

33+
f4name = net_name + "_detail.csv"
34+
detail = open(f4name, 'w')
35+
3236
bw.write("IFMAP SRAM Size,\tFilter SRAM Size,\tOFMAP SRAM Size,\tConv Layer Num,\tDRAM IFMAP Read BW,\tDRAM Filter Read BW,\tDRAM OFMAP Write BW,\tSRAM Read BW,\tSRAM OFMAP Write BW, \n")
3337
maxbw.write("IFMAP SRAM Size,\tFilter SRAM Size,\tOFMAP SRAM Size,\tConv Layer Num,\tMax DRAM IFMAP Read BW,\tMax DRAM Filter Read BW,\tMax DRAM OFMAP Write BW,\tMax SRAM Read BW,\tMax SRAM OFMAP Write BW,\n")
3438
cycl.write("Layer,\tCycles,\t% Utilization,\n")
39+
detailed_log = "Layer," +\
40+
"\tDRAM_IFMAP_start,\tDRAM_IFMAP_stop,\tDRAM_IFMAP_bytes," + \
41+
"\tDRAM_Filter_start,\tDRAM_Filter_stop,\tDRAM_Filter_bytes," + \
42+
"\tDRAM_OFMAP_start,\tDRAM_OFMAP_stop,\tDRAM_OFMAP_bytes," + \
43+
"\tSRAM_read_start,\tSRAM_read_stop,\tSRAM_read_bytes," +\
44+
"\tSRAM_write_start,\tSRAM_write_stop,\tSRAM_write_bytes,\n"
45+
46+
detail.write(detailed_log)
47+
3548

3649
first = True
3750

@@ -61,12 +74,16 @@ def run_net( ifmap_sram_size=1,
6174
num_filters = int(elems[6])
6275

6376
strides = int(elems[7])
64-
filter_base = 1000000 * 100
77+
78+
ifmap_base = offset_list[0]
79+
filter_base = offset_list[1]
80+
ofmap_base = offset_list[2]
6581

6682
bw_log = str(ifmap_sram_size) +",\t" + str(filter_sram_size) + ",\t" + str(ofmap_sram_size) + ",\t" + name + ",\t"
6783
max_bw_log = bw_log
84+
detailed_log = name + ",\t"
6885

69-
bw_str, util, clk = \
86+
bw_str, detailed_str, util, clk = \
7087
tg.gen_all_traces( array_h = array_h,
7188
array_w = array_w,
7289
ifmap_h = ifmap_h,
@@ -81,7 +98,9 @@ def run_net( ifmap_sram_size=1,
8198
filter_sram_size = filter_sram_size,
8299
ifmap_sram_size = ifmap_sram_size,
83100
ofmap_sram_size = ofmap_sram_size,
84-
filt_base = filter_base,
101+
filt_base = filter_base,
102+
ifmap_base = ifmap_base,
103+
ofmap_base = ofmap_base,
85104
sram_read_trace_file= net_name + "_" + name + "_sram_read.csv",
86105
sram_write_trace_file= net_name + "_" + name + "_sram_write.csv",
87106
dram_filter_trace_file=net_name + "_" + name + "_dram_filter_read.csv",
@@ -92,6 +111,9 @@ def run_net( ifmap_sram_size=1,
92111
bw_log += bw_str
93112
bw.write(bw_log + "\n")
94113

114+
detailed_log += detailed_str
115+
detail.write(detailed_log + "\n")
116+
95117
max_bw_log += tg.gen_max_bw_numbers(
96118
sram_read_trace_file = net_name + "_" + name + "_sram_read.csv",
97119
sram_write_trace_file= net_name + "_" + name + "_sram_write.csv",

scale.cfg

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
[general]
2-
run_name = "test_yolo_tiny_24x24"
2+
run_name = "MLPERF_AlphaGoZero_32x32_os"
33

44
[architecture_presets]
5-
ArrayHeight: 24
6-
ArrayWidth: 24
7-
IfmapSramSz: 256
8-
FilterSramSz: 256
9-
OfmapSramSz: 128
5+
ArrayHeight: 32
6+
ArrayWidth: 32
7+
IfmapSramSz: 512
8+
FilterSramSz: 512
9+
OfmapSramSz: 256
10+
IfmapOffset: 0
11+
FilterOffset: 10000000
12+
OfmapOffset: 20000000
1013
Dataflow: os
1114

1215
[network_presets]
13-
TopologyCsvLoc: "./topologies/yolo_tiny.csv"
16+
TopologyCsvLoc: "./topologies/mlperf/AlphaGoZero.csv"
1417

scale.py

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55

66

77
class scale:
8-
def __init__(self):
9-
self.sweep = False
10-
#self.save_space = True
11-
self.save_space = False
8+
def __init__(self, sweep = False, save = False):
9+
self.sweep = sweep
10+
self.save_space = save
1211

1312
def parse_config(self):
1413
general = 'general'
@@ -63,20 +62,37 @@ def parse_config(self):
6362

6463
self.dataflow= config.get(arch_sec, 'Dataflow')
6564

65+
ifmap_offset = config.get(arch_sec, 'IfmapOffset')
66+
self.ifmap_offset = int(ifmap_offset.strip())
67+
68+
filter_offset = config.get(arch_sec, 'FilterOffset')
69+
self.filter_offset = int(filter_offset.strip())
70+
71+
ofmap_offset = config.get(arch_sec, 'OfmapOffset')
72+
self.ofmap_offset = int(ofmap_offset.strip())
73+
6674
## Read network_presets
6775
## For now that is just the topology csv filename
6876
topology_file = config.get(net_sec, 'TopologyCsvLoc')
6977
self.topology_file = topology_file.split('"')[1] #Config reads the quotes as well
7078

7179

7280
def run_scale(self):
81+
self.parse_config()
7382

7483
if self.sweep == False:
75-
self.parse_config()
84+
self.run_once()
85+
else:
86+
self.run_sweep()
87+
88+
89+
def run_once(self):
7690

7791
df_string = "Output Stationary"
7892
if self.dataflow == 'ws':
7993
df_string = "Weight Stationary"
94+
elif self.dataflow == 'is':
95+
df_string = "Input Stationary"
8096

8197
print("====================================================")
8298
print("******************* SCALE SIM **********************")
@@ -91,6 +107,7 @@ def run_scale(self):
91107

92108
net_name = self.topology_file.split('/')[-1].split('.')[0]
93109
#print("Net name = " + net_name)
110+
offset_list = [self.ifmap_offset, self.filter_offset, self.ofmap_offset]
94111

95112
r.run_net( ifmap_sram_size = int(self.isram_min),
96113
filter_sram_size = int(self.fsram_min),
@@ -99,7 +116,8 @@ def run_scale(self):
99116
array_w = int(self.ar_w_min),
100117
net_name = net_name,
101118
data_flow = self.dataflow,
102-
topology_file = self.topology_file
119+
topology_file = self.topology_file,
120+
offset_list = offset_list
103121
)
104122
self.cleanup()
105123
print("************ SCALE SIM Run Complete ****************")
@@ -144,32 +162,31 @@ def cleanup(self):
144162

145163

146164
def run_sweep(self):
147-
self.parse_config()
148-
self.sweep = True
149165

150-
data_flow_list = ['os', 'ws']
151-
#arr_h_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384]
152-
#arr_w_list = [16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1]
153-
#ifmap_sram_list = [256, 512, 1024]
154-
#filter_sram_list = [256, 512, 1024]
155-
#ofmap_sram_list = [128, 256, 512]
166+
all_data_flow_list = ['os', 'ws', 'is']
167+
all_arr_dim_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384]
168+
all_sram_sz_list = [256, 512, 1024]
156169

170+
data_flow_list = all_data_flow_list[1:]
171+
arr_h_list = all_arr_dim_list[3:8]
172+
arr_w_list = all_arr_dim_list[3:8]
173+
#arr_w_list = list(reversed(arr_h_list))
174+
175+
net_name = self.topology_file.split('/')[-1].split('.')[0]
157176
for df in data_flow_list:
158177
self.dataflow = df
159178

160-
#for i in range(len(arr_h_list)):
161-
# self.ar_h_min = arr_h_list[i]
162-
# self.ar_w_min = arr_w_list[i]
179+
for i in range(len(arr_h_list)):
180+
self.ar_h_min = arr_h_list[i]
181+
self.ar_w_min = arr_w_list[i]
163182

164-
net_name = self.topology_file.split('/')[-1].split('.')[0]
165-
self.run_name = net_name + "_" + df + "_" + self.ar_h_min + "x" + self.ar_w_min
183+
self.run_name = net_name + "_" + df + "_" + str(self.ar_h_min) + "x" + str(self.ar_w_min)
166184

167-
self.run_scale()
185+
self.run_once()
168186

169187

170188
if __name__ == "__main__":
171-
s = scale()
189+
s = scale(save = False, sweep = False)
172190
s.run_scale()
173-
#s.run_sweep()
174191

175192

0 commit comments

Comments
 (0)