def getParameters()

in cli/endpoints/online/triton/single-model/olive_model_analyzer/Plot_Performance_Results.py [0:0]


def getParameters(fileName):
    parameters = {}

    with open(fileName) as f:
        lines = f.readlines()
    numLines = len(lines)
    parameterLines = [
        "instance_group {",
        "dynamic_batching {",
        "optimization {",
        "parameters {",
    ]
    keys = ["execution_mode", "inter_op_thread_count", "intra_op_thread_count"]
    for key in keys:
        parameters[key] = "NA"
    lineNum = 0
    parameters["count"] = "1"
    parameters["preferred_batch_size"] = []
    parameters["back_end"] = "CUDA"
    parameters["precision"] = "FP32"
    parameters["graph_level"] = "NA"
    while lineNum < numLines - 1:
        lineNum = lineNum + 1
        line = lines[lineNum].strip()
        if line in parameterLines:
            if line == "instance_group {":
                while line != "}":
                    lineNum = lineNum + 1
                    line = lines[lineNum].strip()
                    if len(line) > 5 and line[0:5] == "count":
                        parameters["count"] = line.split(" ")[1]
            if line == "dynamic_batching {":
                while line != "}":
                    lineNum = lineNum + 1
                    line = lines[lineNum].strip()
                    if len(line) > 20 and line[0:20] == "preferred_batch_size":
                        parameters["preferred_batch_size"].append(line.split(" ")[1])
            if line == "optimization {":
                while line != "}\n":
                    lineNum = lineNum + 1
                    line = lines[lineNum]
                    if len(line) > 10 and line[0:10] == "      name":
                        parameters["back_end"] = line.strip().split(" ")[1]
                        parameters["back_end"] = parameters["back_end"].strip('""')
                    if len(line) > 29 and line[0:29] == '        key: "precision_mode"':
                        lineNum = lineNum + 1
                        line = lines[lineNum].strip()
                        parameters["precision"] = line.split(" ")[1]
                        parameters["precision"] = parameters["precision"].strip('""')
                    if len(line) > 8 and line[0:9] == "  graph {":
                        lineNum = lineNum + 1
                        line = lines[lineNum]
                        if len(line) > 8 and line[0:9] == "    level":
                            parameters["graph_level"] = line.strip().split(" ")[1]
            if line == "parameters {":
                while line != "}\n":
                    lineNum = lineNum + 1
                    line = lines[lineNum]
                    if len(line) > 5 and line[0:6] == "  key:":
                        key = line.strip().split(" ")[1]
                        key = key.strip('""')
                        if key in keys:
                            lineNum = lineNum + 1
                            line = lines[lineNum]
                            if len(line) > 8 and line[0:9] == "  value {":
                                lineNum = lineNum + 1
                                line = lines[lineNum]
                                if len(line) > 16 and line[0:17] == "    string_value:":
                                    parameters[key] = line.strip().split(" ")[1]
                                    parameters[key] = parameters[key].strip('""')
    return parameters