Example #1
0
def test_mapping_registered_args_no_match_for_name():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor)
    parsed, _ = parser.parse_known_args(["--executor=woof"])

    with pytest.raises(TVMCException, match='Executor "woof" is not defined'):
        reconstruct_registry_entity(parsed, Executor)
Example #2
0
def test_registry_to_argparse():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor)
    parsed, _ = parser.parse_known_args(
        ["--executor=aot", "--executor-aot-interface-api=c"])

    assert parsed.executor == "aot"
    assert parsed.executor_aot_interface_api == "c"
Example #3
0
def test_mapping_registered_args():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor)
    parsed, _ = parser.parse_known_args(
        ["--executor=aot", "--executor-aot-interface-api=c"])
    entity = reconstruct_registry_entity(parsed, Executor)

    assert isinstance(entity, Executor)
    assert "interface-api" in entity
    assert entity["interface-api"] == "c"
Example #4
0
def test_mapping_registered_args_mismatch_for_arg():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor)
    parsed, _ = parser.parse_known_args(
        ["--executor=aot", "--executor-graph-link-params=1"])

    with pytest.raises(
            TVMCException,
            match=
            "Passed --executor-graph-link-params but did not specify graph executor",
    ):
        reconstruct_registry_entity(parsed, Executor)
Example #5
0
def add_compile_parser(subparsers, _):
    """Include parser for 'compile' subcommand"""

    parser = subparsers.add_parser("compile", help="compile a model.")
    parser.set_defaults(func=drive_compile)
    parser.add_argument(
        "--cross-compiler",
        default="",
        help="the cross compiler to generate target libraries, e.g. 'aarch64-linux-gnu-gcc'.",
    )
    parser.add_argument(
        "--cross-compiler-options",
        default="",
        help="the cross compiler options to generate target libraries, e.g. '-mfpu=neon-vfpv4'.",
    )
    parser.add_argument(
        "--desired-layout",
        choices=["NCHW", "NHWC"],
        default=None,
        help="change the data layout of the whole graph.",
    )
    parser.add_argument(
        "--dump-code",
        metavar="FORMAT",
        default="",
        help="comma separated list of formats to export the input model, e.g. 'asm,ll,relay'.",
    )
    parser.add_argument(
        "--model-format",
        choices=frontends.get_frontend_names(),
        help="specify input model format.",
    )
    parser.add_argument(
        "-o",
        "--output",
        default="module.tar",
        help="output the compiled module to a specified archive. Defaults to 'module.tar'.",
    )
    parser.add_argument(
        "-f",
        "--output-format",
        choices=["so", "mlf"],
        default="so",
        help="output format. Use 'so' for shared object or 'mlf' for Model Library Format "
        "(only for microTVM targets). Defaults to 'so'.",
    )
    parser.add_argument(
        "--pass-config",
        action="append",
        metavar=("name=value"),
        help="configurations to be used at compile time. This option can be provided multiple "
        "times, each one to set one configuration value, "
        "e.g. '--pass-config relay.backend.use_auto_scheduler=0', "
        "e.g. '--pass-config tir.add_lower_pass=opt_level1,pass1,opt_level2,pass2'.",
    )

    generate_target_args(parser)
    parser.add_argument(
        "--tuning-records",
        metavar="PATH",
        default="",
        help="path to an auto-tuning log file by AutoTVM. If not presented, "
        "the fallback/tophub configs will be used.",
    )
    generate_registry_args(parser, Executor, "graph")
    generate_registry_args(parser, Runtime, "cpp")

    parser.add_argument("-v", "--verbose", action="count", default=0, help="increase verbosity.")
    # TODO (@leandron) This is a path to a physical file, but
    #     can be improved in future to add integration with a modelzoo
    #     or URL, for example.
    parser.add_argument("FILE", help="path to the input model file.")
    parser.add_argument(
        "-O",
        "--opt-level",
        default=3,
        type=int,
        choices=range(0, 4),
        metavar="[0-3]",
        help="specify which optimization level to use. Defaults to '3'.",
    )
    parser.add_argument(
        "--input-shapes",
        help="specify non-generic shapes for model to run, format is "
        '"input_name:[dim1,dim2,...,dimn] input_name2:[dim1,dim2]".',
        type=parse_shape_string,
        default=None,
    )
    parser.add_argument(
        "--disabled-pass",
        help="disable specific passes, comma-separated list of pass names.",
        type=parse_pass_list_str,
        default="",
    )
Example #6
0
def test_mapping_registered_args_no_arg():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor)
    parsed, _ = parser.parse_known_args([])

    assert reconstruct_registry_entity(parsed, Executor) == None
Example #7
0
def test_registry_to_argparse_default():
    parser = argparse.ArgumentParser()
    generate_registry_args(parser, Executor, "aot")
    parsed, _ = parser.parse_known_args([])

    assert parsed.executor == "aot"