@manupa-arm yeah exactly--the main difference is that µTVM wants a static 
library by default. i'm okay with O1 (reusing export_library) so long as we 
don't need to change export_library too much to accommodate µTVM (i don't 
believe any changes are needed, after reviewing it here).

for my autotvm prototype using µTVM RPC server, I made such an `fcompile` that 
calls `tvm.micro.Compiler.library()`: 
https://github.com/areusch/incubator-tvm/blob/utvm-runtime/python/tvm/micro/build.py#L217

i'll merge that next after the QEMU regression is finished or potentially 
concurrently. feel free to hack on it if it can be made useful for this 
situation.

re: PackImportsToC: I'm not sure this is exactly the intended use of 
`export_library`, but it seems like if you had a CSourceModule that imported a 
single LLVM module (containing the binary blobs as const global symbols), you 
could write an `fcompile` that accepted both `.c` and `.o` and produced a 
static library `.a` just as the autotvm does now. that seems fine from a µTVM 
perspective. the advantage would be that it would get around the slow compiler 
parse times that people have reported. we can also create an e.g. 
`PackConstantsToLLVM` to specialize for binary blobs with individual global 
symbol names.

I think so long as the binary blobs are const primitive-typed symbols, most 
linker scripts should place them in flash, correct? we should definitely make 
sure we are generating blobs that stay in flash, so we don't blow up the 
pre-main() flash-to-ram loop.





---
[Visit Topic](https://discuss.tvm.apache.org/t/external-modules-in-utvm/7993/9) 
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/405ddc03298862299a32f87a8dad3f79c7c23ddf213705b681211755534aac58).

Reply via email to