Exemple #1
0
def _write_summary_worksheet(benchmark_result_list, workbook, title_format,
                             cell_formats):
    def _write_summary_unit(compare_result, category, worksheet, row):
        compare_result_keys = compare_result.compare_result_keys
        compare_result_colors = {"Better": "green", "Less": "red"}
        if category is not None:
            worksheet.write(row, 0, category, title_format)
        for col in range(len(compare_result_keys)):
            title = COMPARE_RESULT_SHOWS[compare_result_keys[col]]
            worksheet.write(row, col + 1, title, title_format)

        row += 1
        for device in ["gpu", "cpu"]:
            for direction in ["forward", "backward"]:
                method_set = ["total"
                              ] if device == "cpu" else ["total", "kernel"]
                for method in method_set:
                    category = device.upper() + " " + string.capwords(
                        direction) + " (" + method + ")"
                    worksheet.write(row, 0, category)

                    value = compare_result.get(device, direction, method)
                    num_total_cases = value["Total"]
                    for col in range(len(compare_result_keys)):
                        compare_result_key = compare_result_keys[col]
                        num_cases = value[compare_result_key]

                        if num_cases > 0:
                            color = compare_result_colors.get(
                                compare_result_key, "black")
                            ratio = float(num_cases) / float(num_total_cases)
                            ratio_str = "%.2f" % (ratio * 100)
                            this_str = "{} ({}%)".format(num_cases, ratio_str)
                        else:
                            color = "black"
                            this_str = "--"
                        worksheet.write(row, col + 1, this_str,
                                        cell_formats[color])
                    row += 1
        return row

    ws = workbook.add_worksheet("summary")
    column_width = [40, 20, 20, 20, 20, 20, 20]
    for col in range(len(column_width)):
        col_char = chr(ord("A") + col)
        ws.set_column(col_char + ":" + col_char, column_width[col])

    row = 0
    compare_result_case_level = op_benchmark_unit.summary_compare_result(
        benchmark_result_list)
    row = _write_summary_unit(compare_result_case_level, "case_level", ws, row)

    compare_result_op_level, compare_result_dict_ops_detail = op_benchmark_unit.summary_compare_result_op_level(
        benchmark_result_list, return_op_detail=True)
    row = _write_summary_unit(compare_result_op_level, "op_level", ws, row + 1)

    for op_type, op_compare_result in sorted(
            compare_result_dict_ops_detail.items()):
        row = _write_summary_unit(op_compare_result, op_type, ws, row + 1)
Exemple #2
0
def dump_json(benchmark_result_list, output_path=None):
    """
    dump data to a json file
    """
    if output_path is None:
        print("Output path is not specified, will not dump json.")
        return

    compare_result_case_level = op_benchmark_unit.summary_compare_result(
        benchmark_result_list)
    compare_result_op_level = op_benchmark_unit.summary_compare_result_op_level(
        benchmark_result_list)

    with open(output_path, 'w') as f:
        summary_case_json = create_summary_json(compare_result_case_level,
                                                "case_level")
        summary_op_json = create_summary_json(compare_result_op_level,
                                              "case_level")
        f.write(json.dumps(summary_case_json + summary_op_json))