def save_final_configuration(configuration): best_config_log.write("]") best_config_log.close() best_log.close() legup_parameters.generate_file(configuration, "./")
def save_final_configuration(configuration): legup_parameters.generate_file(configuration, ".") best_config_log.write("]") best_config_log.close() best_log.close() best_cycles_log.close() best_fmax_log.close()
def get_wallclock_time(cfg): unique_id = uuid4() unique_path = "{0}_{1}".format(application, unique_id) copytree(application, unique_path) os.remove("{0}/config.tcl".format(unique_path)) filename = legup_parameters.generate_file(cfg, unique_path) cmd = "./{0} {1}".format(script_name, unique_path) try: output = subprocess.check_output(cmd, shell=True) output = output.split() fmax = float(output[0]) combinatorial = float(output[1]) registers = float(output[2]) dsp = float(output[3]) rmtree(unique_path, ignore_errors=True) return fmax + combinatorial + registers + dsp except: rmtree(unique_path, ignore_errors=True) return penalty
def get_wallclock_time(cfg): unique_id = uuid4() unique_path = "{0}_{1}".format(application, unique_id) copytree(application, unique_path) os.remove("{0}/config.tcl".format(unique_path)) filename = legup_parameters.generate_file(cfg, unique_path) cmd = "./{0} {1}".format(script_name, unique_path) try: output = subprocess.check_output(cmd, shell = True) output = output.split() fmax = float(output[0]) combinatorial = float(output[1]) registers = float(output[2]) dsp = float(output[3]) rmtree(unique_path, ignore_errors = True) return fmax + combinatorial + registers + dsp except: rmtree(unique_path, ignore_errors = True) return penalty
def get_wallclock_time(cfg): unique_id = uuid4() unique_host_path = "{0}/{1}".format(host_path, unique_id) os.mkdir(unique_host_path) copy(script_name, "{0}/{1}".format(unique_host_path, script_name)) filename = legup_parameters.generate_file(cfg, unique_host_path) docker_cmd = "sudo docker run --rm" docker_cmd += " -w {0}".format(container_path) docker_cmd += " -v {0}:".format(unique_host_path) docker_cmd += "{0} -t -i {1}".format(container_path, image_name) docker_cmd += " /bin/bash -c \"./{0} {1} {2}\"".format(script_name, unique_id, verilog_file) print(docker_cmd) try: output = subprocess.check_output(docker_cmd, shell = True) output = output.split() print output factor = 1000. cycles = float(output[0]) fmax = float(output[1]) # Skip output[2,3,4] lu = float(output[5]) pins = float(output[6]) regs = float(output[7]) block = float(output[8]) ram = float(output[9]) dsp = float(output[10]) # TODO Improve weights # value = (cycles * (factor / fmax)) + lu + pins + regs + block + ram + dsp value = relative_improvement_normalization(cycles, fmax, lu, pins, regs, block, ram, dsp) result = { 'cycles': cycles, 'fmax': fmax, 'lu': lu, 'pins': pins, 'regs': regs, 'block': block, 'ram': ram, 'dsp': dsp, 'value': value, } rmtree(unique_host_path, ignore_errors = True) return result except: # TODO: Discover all parameters that # break compilation result = { 'cycles': penalty, 'fmax': penalty, 'lu': penalty, 'pins': penalty, 'regs': penalty, 'block': penalty, 'ram': penalty, 'dsp': penalty, 'value': penalty, } rmtree(unique_host_path, ignore_errors = True) return result
def get_wallclock_time(cfg): unique_id = uuid4() unique_host_path = "{0}/{1}".format(host_path, unique_id) os.mkdir(unique_host_path) copy(script_name, "{0}/{1}".format(unique_host_path, script_name)) filename = legup_parameters.generate_file(cfg, unique_host_path) docker_cmd = "sudo docker run --rm" docker_cmd += " -w {0}".format(container_path) docker_cmd += " -v {0}:".format(unique_host_path) docker_cmd += "{0} -t -i {1}".format(container_path, image_name) docker_cmd += " /bin/bash -c \"./{0} {1} {2}\"".format( script_name, unique_id, verilog_file) print(docker_cmd) try: output = subprocess.check_output(docker_cmd, shell=True) output = output.split() print output factor = 1000. cycles = float(output[0]) fmax = float(output[1]) # Skip output[2,3,4] lu = float(output[5]) pins = float(output[6]) regs = float(output[7]) block = float(output[8]) ram = float(output[9]) dsp = float(output[10]) # TODO Improve weights # value = (cycles * (factor / fmax)) + lu + pins + regs + block + ram + dsp value = relative_improvement_normalization(cycles, fmax, lu, pins, regs, block, ram, dsp) result = { 'cycles': cycles, 'fmax': fmax, 'lu': lu, 'pins': pins, 'regs': regs, 'block': block, 'ram': ram, 'dsp': dsp, 'value': value, } rmtree(unique_host_path, ignore_errors=True) return result except: # TODO: Discover all parameters that # break compilation result = { 'cycles': penalty, 'fmax': penalty, 'lu': penalty, 'pins': penalty, 'regs': penalty, 'block': penalty, 'ram': penalty, 'dsp': penalty, 'value': penalty, } rmtree(unique_host_path, ignore_errors=True) return result