diff --git a/llvm/projects/soc_simulator/src/driver.py b/llvm/projects/soc_simulator/src/driver.py index 1df46eec8fc34cee7c6a7683d1faaae4a94639ca..9d39f1394f6faa55f3eb00bb78ddf13747e3738a 100644 --- a/llvm/projects/soc_simulator/src/driver.py +++ b/llvm/projects/soc_simulator/src/driver.py @@ -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()