From d579f04c2fa58ab6894b3e6ebbb6e22895d856e9 Mon Sep 17 00:00:00 2001 From: Elizabeth <hashim.sharif91@gmail.com> Date: Wed, 9 Oct 2019 00:43:40 -0500 Subject: [PATCH] Implemented code to run promise simulator --- llvm/projects/soc_simulator/src/driver.py | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/llvm/projects/soc_simulator/src/driver.py b/llvm/projects/soc_simulator/src/driver.py index f9df2f32c4..b56f60ac68 100644 --- a/llvm/projects/soc_simulator/src/driver.py +++ b/llvm/projects/soc_simulator/src/driver.py @@ -2,6 +2,7 @@ from collections import defaultdict import os +import subprocess import sys def build_nested_default_dict(): @@ -145,6 +146,38 @@ def quantize(curr_layer, prev_layer, h2f_f2h_operation_ind, layer_data): assert(False) # Error: Should never reach this section +def run_promise_simulation(swing, layer_data): + layer_name = layer_data["Name"] + patch_factor = 1 + + if is_conv(layer_name): + rows_a = layer_data["N"] * layer_data["H"] * layer_data["W"] \ + / (layer_data["Sh"] * layer_data["Sw"]) + cols_a = layer_data["Cin"] * layer_data["Kh"] * layer_data["Kw"] + rows_b = cols_a + cols_b = layer_data["Cout"] + patch_factor = layer_data["Kh"] * layer_data["Kw"] + elif is_fc(layer_name): + rows_a = layer_data["RA"] + cols_a = layer_data["CA"] + rows_b = cols_a + cols_b = layer_data["CB"] + else: + print("PROMISE can't run whatever this layer is.") + exit(1) + + # Run promise simulator + # TODO need to print time and energy so we can pipe it + # get output --> total time and energy + ptm_process = subprocess.Popen(["./ptm", str(rows_a), str(cols_a), str(rows_b), \ + str(cols_b), str(patch_factor), str(swing)]) + output, _ = ptm_process.communicate() + total_time_energy = output.strip().split(' ') + + assert(len(total_time_energy) == 2) + return total_time_energy[0], total_time_energy[1] + + def run_simulations(config_filename, results_filename): config_file = open(config_filename, "r") results_file = open(results_filename, "w") -- GitLab