def METHOD_NAME(subgraph: "Subgraph", args):
    # create runner
    runner = vart.Runner.create_runner(subgraph, args.runner_mode)
    # get input&output tensors
    inputTensors = runner.get_input_tensors()
    outputTensors = runner.get_output_tensors()
    inputs = [
        np.empty(tuple(t.dims), dtype=t.dtype.lstrip("x"), order="C")
        for t in inputTensors
    ]
    outputs = [
        np.empty(tuple(t.dims), dtype=t.dtype.lstrip("x"), order="C")
        for t in outputTensors
    ]
    order_inputs = list(inputTensors)
    order = sorted(range(len(order_inputs)), key=lambda k: order_inputs[k].name)
    # fillin input data
    for i in range(len(inputTensors)):
        print("fillin", inputTensors[order[i]].name)
        fillin_inputs(args.input_bin[i::len(inputTensors)], inputs[order[i]])
    # run runner
    v = runner.execute_async(inputs, outputs)
    status = runner.wait(v)
    assert status == 0, "failed to run runner"
    dump_outputs(outputs, outputTensors)