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)
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"
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"
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)
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="", )
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
def test_registry_to_argparse_default(): parser = argparse.ArgumentParser() generate_registry_args(parser, Executor, "aot") parsed, _ = parser.parse_known_args([]) assert parsed.executor == "aot"