comaniac commented on a change in pull request #7304:
URL: https://github.com/apache/tvm/pull/7304#discussion_r576478455



##########
File path: python/tvm/driver/tvmc/common.py
##########
@@ -91,18 +272,37 @@ def target_from_cli(target):
     -------
     tvm.target.Target
         an instance of target device information
+    codegens : list of dict
+        This list preserves the order in which codegens were
+        provided via command line. Each Dict contains three keys:
+        'kind', containing the name of the codegen; 'opts' containing
+        a key-value for all options passed via CLI; 'raw',
+        containing the plain string for this codegen
     """
+    extra_codegens = []
 
     if os.path.exists(target):
         with open(target) as target_file:
-            logger.info("using target input from file: %s", target)
+            logger.info("target input is a path: %s", target)
             target = "".join(target_file.readlines())
+    elif is_inline_json(target):
+        logger.info("target input is inline JSON: %s", target)
+    else:
+        logger.info("target input is plain text: %s", target)
+        try:
+            parsed_targets = parse_target(target)
+        except ValueError as ex:
+            raise TVMCException(f"Error parsing target string '{target}'.\nThe 
error was: {ex}")
+
+        validate_targets(parsed_targets)
+        target = parsed_targets[-1]["raw"]
+        extra_codegens = parsed_targets[:-1] if len(parsed_targets) > 1 else []
 
     # TODO(@leandron) We don't have an API to collect a list of supported
     #       targets yet
     logger.debug("creating target from input: %s", target)
 
-    return tvm.target.Target(target)
+    return tvm.target.Target(target), extra_codegens

Review comment:
       I don't really agree that JSON should hide from end-users. According to 
the target specification plan, we will encourage everyone to use a simple 
string "tag" to specify defined targets, including composite targets. 
Meanwhile, JSON will become the major format of specifying a target in addition 
to tag. As a result, `--target=llvm -mcpu=...` won't be a recommended format 
anymore.
   
   However, since we haven't deprecated the current string target mechanism, 
it's also fine for me if you say this is just a temporary solution. We could 
align the semantic to the new target system (plain text -> tag, JSON -> full 
target specification) when it is there.
   
   cc @junrushao1994 
    




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to