#!/usr/bin/env python # coding: utf-8 # In[31]: import os from scipy import spatial import numpy as np import argparse # In[36]: def main_(args): case_folder_path = args.input_folder hardware_validate_520(os.path.join(case_folder_path, "dynasty"), os.path.join(case_folder_path, "hw_c_sim")) def hardware_validate_520(dynasty_folder_path, hw_c_sim_folder_path): assert os.path.exists(dynasty_folder_path) and os.path.exists(hw_c_sim_folder_path), "[Error] validating result does not exists" dynasty_file_list = [] for file in os.listdir(dynasty_folder_path): if file.startswith("layer_output") and file.endswith("fl.txt"): dynasty_file_list.append(os.path.join(dynasty_folder_path, file)) # for ele in dynasty_file_list: # print(ele) hw_c_sim_file_list = [] for file in os.listdir(hw_c_sim_folder_path): if "_float" in file: hw_c_sim_file_list.append(os.path.join(hw_c_sim_folder_path, file)) assert len(hw_c_sim_file_list) == len(dynasty_file_list), "[Error] number of outputs not match" assert len(dynasty_file_list) != 0, "[Error] no output file" for dynasty_file in dynasty_file_list: dynasty_list = [float(line.strip()) for line in open(dynasty_file).readlines()] match = False result_list = [] for hw_c_sim_file in hw_c_sim_file_list: hw_c_sim_list = [float(line.strip()) for line in open(hw_c_sim_file).readlines()] if len(hw_c_sim_list) == len(dynasty_list): result = 0 if sum(hw_c_sim_list) == sum(dynasty_list) == 0: result = 1 else: result = 1 - spatial.distance.cosine(hw_c_sim_list, dynasty_list) # print(result) if result > 0.99996: match = True # print("matched! dist: {}".format( np.linalg.norm(np.asarray(hw_c_sim_list)-np.asarray(dynasty_list)))) break else: result_list.append(result) assert match, "[Error] hardware validating fails!" print("[info] hardware validating successes!") if __name__ == "__main__": argparser = argparse.ArgumentParser( description="convert emulator result to box and score" ) argparser.add_argument( '-i', '--input_folder', help="path of input folder, the case folder" ) args = argparser.parse_args() main_(args)