Skip to content
Snippets Groups Projects
Commit c00161ad authored by Elizabeth's avatar Elizabeth
Browse files

Changed internal data structure for parsed layers file

parent f79ebb29
No related branches found
No related tags found
No related merge requests found
...@@ -7,8 +7,6 @@ import sys ...@@ -7,8 +7,6 @@ import sys
def build_nested_default_dict(): def build_nested_default_dict():
return defaultdict(build_nested_default_dict) return defaultdict(build_nested_default_dict)
tensor_layers = defaultdict(build_nested_default_dict)
def is_conv(operation_name): def is_conv(operation_name):
return operation_name.startswith("Conv") return operation_name.startswith("Conv")
...@@ -18,6 +16,10 @@ def is_nml(operation_name): ...@@ -18,6 +16,10 @@ def is_nml(operation_name):
def is_fc(operation_name): def is_fc(operation_name):
return operation_name.startswith("FC") return operation_name.startswith("FC")
# NOTE: Use an OrderedDict if we want to search by operation name
# Using a list bc we care about the order the data is read in
# since it corresponds to the data in the configuration file
tensor_layers = []
def parse_tensor_layer_file(layer_filename): def parse_tensor_layer_file(layer_filename):
if not os.path.isfile(layer_filename): if not os.path.isfile(layer_filename):
print("ERROR: %s was not found." % layer_filename) print("ERROR: %s was not found." % layer_filename)
...@@ -27,27 +29,32 @@ def parse_tensor_layer_file(layer_filename): ...@@ -27,27 +29,32 @@ def parse_tensor_layer_file(layer_filename):
for line in layer_file: for line in layer_file:
layer_data = line.strip().split(',') layer_data = line.strip().split(',')
layer_name = layer_data[0] layer_name = layer_data[0]
tensor_layer = defaultdict(str)
tensor_layer["Name"] = layer_name
if is_conv(layer_name): if is_conv(layer_name):
tensor_layers[layer_name]["N"] = layer_data[1] tensor_layer["N"] = layer_data[1]
tensor_layers[layer_name]["Cin"] = layer_data[2] tensor_layer["Cin"] = layer_data[2]
tensor_layers[layer_name]["H"] = layer_data[3] tensor_layer["H"] = layer_data[3]
tensor_layers[layer_name]["W"] = layer_data[4] tensor_layer["W"] = layer_data[4]
tensor_layers[layer_name]["Cout"] = layer_data[5] tensor_layer["Cout"] = layer_data[5]
tensor_layers[layer_name]["Kh"] = layer_data[6] tensor_layer["Kh"] = layer_data[6]
tensor_layers[layer_name]["Kw"] = layer_data[7] tensor_layer["Kw"] = layer_data[7]
tensor_layers[layer_name]["Sh"] = layer_data[8] tensor_layer["Sh"] = layer_data[8]
tensor_layers[layer_name]["Sw"] = layer_data[9] tensor_layer["Sw"] = layer_data[9]
elif is_fc(layer_name): elif is_fc(layer_name):
tensor_layers[layer_name]["RA"] = layer_data[1] tensor_layer["RA"] = layer_data[1]
tensor_layers[layer_name]["CA"] = layer_data[2] tensor_layer["CA"] = layer_data[2]
tensor_layers[layer_name]["RB"] = layer_data[3] tensor_layer["RB"] = layer_data[3]
tensor_layers[layer_name]["CB"] = layer_data[4] tensor_layer["CB"] = layer_data[4]
elif not is_nml(layer_name): # TODO should we store data for NMLs? elif not is_nml(layer_name): # TODO should we store data for NMLs?
print("ERROR: Invalid layer name %s" % layer_name) print("ERROR: Invalid layer name %s" % layer_name)
exit(1) exit(1)
tensor_layers.append(tensor_layer)
layer_file.close() layer_file.close()
# should this be a nested dict of dicts? # should this be a nested dict of dicts?
...@@ -89,11 +96,23 @@ def parse_tensor_table(table_filename): ...@@ -89,11 +96,23 @@ def parse_tensor_table(table_filename):
table_file.close() table_file.close()
def run_simulations(): def run_simulations(config_filename, results_filename):
pass config_file = open(config_filename, "r")
# open configuration file results_file = open(results_filename, "w")
# open results file
# read through each line in the configuration file # each line = indepedent configuration
# layers are separated by commas
# tensor ops are separated by spaces
for config in config_file:
config_layers = config.strip().split(',')
prev = "FP32" # TODO??!
curr = None
for layer_ind, curr_layer in enumerate(config_layers):
# TODO tensor_layers needs to be a list?
curr_tensor_layer = tensor_layers[layer_ind]
# for each config file line --> parse the comma separated voltage swing levels # for each config file line --> parse the comma separated voltage swing levels
# recall: each line = a configuration that works # recall: each line = a configuration that works
# for each level # for each level
...@@ -119,5 +138,5 @@ if __name__ == "__main__": ...@@ -119,5 +138,5 @@ if __name__ == "__main__":
print("Usage: python driver.py <layer info> <tensor info> <configurations> <results file>") print("Usage: python driver.py <layer info> <tensor info> <configurations> <results file>")
exit(1) exit(1)
''' '''
#parse_tensor_layer_file("/home/nvidia/Gitlab/hpvm/llvm/projects/hpvm-tensor-rt/build_mobilenet/mobilenet_layers.txt") parse_tensor_layer_file("/home/nvidia/Gitlab/hpvm/llvm/projects/hpvm-tensor-rt/build_mobilenet/mobilenet_layers.txt")
parse_tensor_table("/home/nvidia/Gitlab/hpvm/llvm/projects/hpvm-tensor-rt/build_pldi/mobilenet_results/mobilenet_tensors.txt") #parse_tensor_table("/home/nvidia/Gitlab/hpvm/llvm/projects/hpvm-tensor-rt/build_pldi/mobilenet_results/mobilenet_tensors.txt")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment