brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 858c8ca Raw
87 lines · plain
1#!@Python3_EXECUTABLE@2# -*- coding: utf-8 -*-3 4import argparse5import datetime6import json7import os8import sys9 10from urllib import error as urlerror11from urllib import parse as urlparse12from urllib import request13 14 15mlir_source_root = "@MLIR_SOURCE_DIR@"16sys.path.insert(0, os.path.join(mlir_source_root, "utils", "mbr", "mbr"))17 18from main import main19 20 21if __name__ == "__main__":22    parser = argparse.ArgumentParser()23    parser.add_argument(24        "--machine",25        required=True,26        help="A platform identifier on which the "27             "benchmarks are run. For example"28             " <hardware>-<arch>-<optimization level>-<branch-name>"29    )30    parser.add_argument(31        "--revision",32        required=True,33        help="The key used to identify different runs. "34             "Could be anything as long as it"35             " can be sorted by python's sort function"36    )37    parser.add_argument(38        "--url",39        help="The lnt server url to send the results to",40        default="http://localhost:8000/db_default/v4/nts/submitRun"41    )42    parser.add_argument(43        "--result-stdout",44        help="Print benchmarking results to stdout instead"45             " of sending it to lnt",46        default=False,47        action=argparse.BooleanOptionalAction48    )49    parser.add_argument(50        "top_level_path",51        help="The top level path from which to search for benchmarks",52        default=os.getcwd(),53    )54    parser.add_argument(55        "--stop_on_error",56        help="Should we stop the benchmark run on errors? Defaults to false",57        default=False,58    )59    args = parser.parse_args()60 61    complete_benchmark_start_time = datetime.datetime.utcnow().isoformat()62    benchmark_function_dicts = main(args.top_level_path, args.stop_on_error)63    complete_benchmark_end_time = datetime.datetime.utcnow().isoformat()64    lnt_dict = {65        "format_version": "2",66        "machine": {"name": args.machine},67        "run": {68            "end_time": complete_benchmark_start_time,69            "start_time": complete_benchmark_end_time,70            "llvm_project_revision": args.revision71        },72        "tests": benchmark_function_dicts,73        "name": "MLIR benchmark suite"74    }75    lnt_json = json.dumps(lnt_dict, indent=4)76    if args.result_stdout is True:77        print(lnt_json)78    else:79        request_data = urlparse.urlencode(80            {"input_data": lnt_json}81        ).encode("ascii")82        req = request.Request(args.url, request_data)83        try:84            resp = request.urlopen(req)85        except urlerror.HTTPError as e:86            print(e)87