For the sake of record keeping, @zxybazh recently submitted this PR [Target] Add target host field for target specification by zxybazh · Pull Request #7462 · apache/tvm · GitHub that implements parts of what is agreed in this thread. The PR is not merged as I write this, but I think it will be very soon.
During this discussion, @areusch touched on a very interesting topic regarding the API design for Target: [Target] Add target host field for target specification by zxybazh · Pull Request #7462 · apache/tvm · GitHub
In TVMC, which is user facing, we recently updated the syntax to allow multiple target specification using something like --target="ethos-n77, llvm mattr=+neon"
or --target="acl, llvm mattr=+neon"
or even --target="ethos-n77, acl, llvm mattr=+neon"
, which represents the sorted order of targets in which we want to offload the network.
There is some more discussion here, in case you are interested: BYOC Partitioning Support on TVMC
I think this is a very relevant discussion, considering we can use all the discussion in this thread to define the specification for the target, and then evolve into a more natural API for the user to care about, that we’ll then convert to the internal API specification the TVM care about.
I would be very interested in hearing what others think about where is the line between internal target representation and potential improvements for the user facing API.