To elaborate on C2, while it is desirable and recommended to have consolidated runtime, executor choice when possible. Naturally there are cases that would requires a bit of generalization. The multi-machine case is one example.
There are also other examples that can appear on a single SoC. Consider the following scenario, where there is an accelerator that comes with a CPU-like co-processor as controller. ```bash - host: arm - runtime: vm - vdevice0: accelerator-with-coprocessor - host: risc-v - runtime: graph - device: my-accelerator ``` In this case, the host is a ARM chip that drives the overall computation(say through VM). The co-processor, however, also comes with its own controller, that is able to execute a sub-graph of computation, which in turn dispatches to my-accelerator. As a result, we will need to compile a tvm runtime(that may be different from the host) one, and use that to drive the graph computation on the co-processor. Back to the compilation path. I agree that it is important to build a standard pipeline. I would also like to note that we need to design to be compatible of emerging needs. Allowing target specification to be recursive, while validating them, would help the ecosystem to develop these capabilities. Additionally, some of the needs can appear now, for example, we could see a need to have a more flexible VM runtime that drives GPU computation, while offloading subgraph to cuda-graph(more efficient and less flexible). Finally to build on @Mousius 's point. Allowing target to be recursive does not preclude structure or naming. Targets have kinds and schemas that attached to each kind. Further validation can also be done throughout the process. So instead of ``` (CompilationConfig) -> (Target-CUDA), (Target-X86) -> (Executor) -> (Runtime) ``` We would get ``` (Target-Kind=Hetro-Exec) -> (Target-Kind=CUDA), (Target-Kind=X86) -> (Executor) -> (Runtime) ``` >From the UX's pov, we do not need to force user to pass in such compositional >ones(that is complicated) if they only care about single device execution (and >canonicalize internally). Even better you will be able to leverage the tagging features at different level, so user can just pass in ```python build(mod, target="my-hetro-exec-platform0") ``` --- [Visit Topic](https://discuss.tvm.apache.org/t/pre-rfc-compilation-configuration-representation/11372/14) to respond. You are receiving this because you enabled mailing list mode. To unsubscribe from these emails, [click here](https://discuss.tvm.apache.org/email/unsubscribe/fdd5931911f5cde301da2e3daa5b83320acc2535fac0b7dd57f607389f78e971).