@tqchen @manupa-arm @mjs @giuseros great discussions so far!
> Identifiers that begin with underscore are reserved by the C standard.
> Conformant C code should not use them, dropping the _ and using just “tvm_…”
> would be conformant.
I agree with this. Do we need to consider distinguishing this prefix from that
used within TVM itself? e.g. `tvmgen_` so that stacktraces when compute is
launched from the shared library are clear.
> I dont follow why a “prefix” necessarily mean user being able to select it?
> If “prefix” is not the right term we should not call it a prefix.
Yeah this is just me stating that we were proposing
`tvm_<model_name>_<function_name>`, where `<model_name>` is termed a prefix.
I'd call `tvm_<model_name>_` a prefix here.
> I agree that having a common prefix is helpful in the dso landscape to
> clearly identify function generated by tvm. To faciliate discussion, consider
> the following code
>
> ```
> m = tvm.runtime.load_module("x.so")
> # Option P0: require explicit query using tvm_run
> run = m["tvm_run"]
> # Option P1: the underlying symbol is "tvm_run"
> run = m["run"]
> ```
>
> I believe we are still talking about P0 atm for simplicity(direct
> correspondence of symbol and packed func name), but allow the AOT generator
> to append a prefix(like @areusch 's comment of prefix starting from char 0).
> My main comment of backward compact is when we start to choose P1. If we go
> with P1, then we will need to put more thoughts into it.
@tqchen, in this case, the main function being queried should be the factory
function for Module-based Model Runtime Interface, no? In that case, it seems
reasonable to require:
```
m = tvm.runtime.load_module("x.so")
# User looks up module via prefix
executor = m["customprefix_tvm_modelname"]()
# Or perhaps TVM can fall back to the standard one
executor = m["modelname"](). # Looks up tvmgen_modelname
executor["set_input"]("foo", bar)
# ...
```
It should be possible to include the prefix when looking up the module-specific
functions. It's also worth pointing out here that this discussion is for the
case of loading a module using the C++ runtime. With the C runtime, I think
it's expected that the user chooses `<prefix>` to match their firmware
implementation.
---
[Visit
Topic](https://discuss.tvm.apache.org/t/mini-rfc-name-mangling-in-aot/9907/10)
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/14e17e1c7fe0e39662228f4b7fe0fbf061aacf7166b9c33c13747def03efc8f2).