示例#1
0
文件: main.py 项目: soarlab/paf
def process_file(file, mantissa, exp, range_my_dict, abs_my_dict):
    try:
        print("\n\n\n\n" + file + "\n\n\n\n\n")
        f = open(file, "r")
        file_name = (ntpath.basename(file).split(".")[0]
                     ).lower()  # (file.split(".")[0]).lower()
        text = f.read()
        text = text[:-1]
        f.close()
        myYacc = FPRyacc(text, False)
        start_time = time.time()
        T = TreeModel(
            myYacc, mantissa, exp, [40, 10], 50,
            250000)  #, error_model="typical", dependent_mode="p-box")
        end_time = time.time()
        print("Exe time --- %s seconds ---" % (end_time - start_time))
        finalTime = end_time - start_time

        if os.path.exists(output_path + file_name):
            shutil.rmtree(output_path + file_name)
        os.makedirs(output_path + file_name)

        #loadedSamples, values_samples, abs_err_samples, rel_err_samples = T.generate_error_samples(5, file_name)
        loadedGolden, values_golden, abs_err_golden, rel_err_golden, err_golden = T.generate_error_samples(
            golden_model_time, file_name, golden=True)

        with open(
                output_path + file_name + "/" + file_name +
                "_constraints_log.out", "w+") as log:
            print(T.logging_constraints, file=log)

        f = open(
            output_path + file_name + "/" + file_name + "_CDF_summary.out",
            "w+")
        f.write("Execution Time:" + str(finalTime) + "s \n\n")
        plot_range_analysis_CDF(T, loadedGolden, values_golden, f, file_name,
                                range_my_dict.get(file_name))
        plot_abs_error_analysis_CDF(T, loadedGolden, abs_err_golden, f,
                                    file_name, abs_my_dict.get(file_name),
                                    rel_my_dict.get(file_name))
        #plot_error_analysis_CDF(T, loadedGolden, err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name))
        #plot_abs_error_analysis_CDF(T.relative_err_distr, loadedGolden, rel_err_samples, rel_err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name))
        f.flush()
        f.close()

        f = open(
            output_path + file_name + "/" + file_name + "_PDF_summary.out",
            "w+")
        f.write("Execution Time:" + str(finalTime) + "s \n\n")
        #plot_range_analysis_PDF(T.final_quantized_distr, loadedGolden, values_golden, f, file_name, range_my_dict.get(file_name))
        #plot_error_analysis_PDF(T.abs_err_distr, loadedGolden, abs_err_samples, abs_err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name))
        f.flush()
        f.close()

    except Exception as e:
        logging.error(traceback.format_exc())

    finally:
        del values_golden, abs_err_golden, rel_err_golden
        gc.collect()
        matplotlib.pyplot.close("all")