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)
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))