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