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

Fixed critical bug in prev/curr_layer assignment

parent 0aed9405
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,13 @@ class Driver:
results_time_key = "Time"
results_energy_key = "Energy"
def __get_str(self, appr):
if appr == Driver.ApproxTypes.FP16:
return "FP16"
elif appr == Driver.ApproxTypes.FP32:
return "FP32"
elif appr == Driver.ApproxTypes.PROMISE:
return "PROMISE"
def driver(self):
self.__parse_tensor_layer_file()
......@@ -143,6 +150,7 @@ class Driver:
def __quantize(self, curr_layer, prev_layer, h2f_f2h_operation_ind, layer_data):
print(self.__get_str(curr_layer), self.__get_str(prev_layer), h2f_f2h_operation_ind)
if curr_layer == prev_layer or curr_layer == Driver.ApproxTypes.PROMISE \
or prev_layer == Driver.ApproxTypes.PROMISE: # No quantization needed
return 0.0, 0.0
......@@ -187,7 +195,7 @@ class Driver:
exit(1)
# Run promise simulator
# TODO need to print time and energy in the ptm runner so we can pipe it
output = subprocess.Popen(["./ptm", str(rows_a), str(cols_a), str(rows_b), \
output = subprocess.Popen(["./ptm_new", str(rows_a), str(cols_a), str(rows_b), \
str(cols_b), str(patch_factor), str(swing)], \
stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate()[0]
total_time_energy = output.strip().split(',')
......@@ -210,7 +218,6 @@ class Driver:
def __run_simulations(self):
print("run sim")
if not os.path.isfile(self.__config_filename):
print("ERROR: %s was not found" % self.__config_filename)
exit(1)
......@@ -228,14 +235,12 @@ class Driver:
for layer_ind, config_layer in enumerate(config_layers): # level
layer_data = self.__tensor_layers[layer_ind] # layer
layer_name = layer_data["Name"]
if Driver.is_promise(config_layer):
print("Running layer %s on PROMISE" % layer_name)
curr_layer = Driver.ApproxTypes.PROMISE
quant_time, quant_energy = self.__quantize(curr_layer, prev_layer, 0, layer_data)
# Compute
time, energy = self.__run_promise_simulation(config_layer, layer_data)
print(time, energy)
self.__aggregate_results[Driver.results_time_key][self.__config_count] += time
self.__aggregate_results[Driver.results_energy_key][self.__config_count] += energy
else:
......@@ -250,15 +255,16 @@ class Driver:
curr_layer = Driver.ApproxTypes.FP16
else:
curr_layer = Driver.ApproxTypes.FP32
quant_time, quant_energy = self.__quantize(curr_layer, prev_layer, tensor_ind, layer_data)
conv_time, conv_energy = self.__run_gpu_simulation(curr_layer, layer_name, tensor_ind)
total_time += quant_time + conv_time
total_energy += quant_energy + conv_energy
prev_layer = curr_layer
self.__aggregate_results[Driver.results_time_key][self.__config_count] += total_time
self.__aggregate_results[Driver.results_energy_key][self.__config_count] += total_energy
prev_layer = curr_layer
self.__config_count += 1
print("\n")
config_file.close()
......
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