tomhepworth opened a new issue, #17194: URL: https://github.com/apache/tvm/issues/17194
I am compiling a test model with the following TVMC command: ``` python -m tvm.driver.tvmc compile test.onnx --verbose --target='c -keys=cpu' --runtime=crt --runtime-crt-system-lib=1 --executor=aot --executor-aot-interface-api=c --executor-aot-unpacked-api=1 --pass-config tir.disable_vectorize=1 --output-format=mlf --output=model_tvm.tar ``` Inside the generated `lib0.c` I get two definitions of both `tvmgen_default_run` and `tvmgen_default__tvm_main__`. This causes the following errors : - `Conflicting types for 'tvmgen_default_run'` - `Conflicting types for 'tvmgen_default___tvm_main__'` By simply removing the conflicting definition I am able to compile a working binary. In this forum post it was resolved with unpacked-api=true, this did not work for me from tvmc. https://discuss.tvm.apache.org/t/problem-with-tvmexecute-on-arduino-in-standalone-execution/15420 This bug report also experiences the issue https://github.com/apache/tvm/issues/14871 but it has gone unaddressed ### Expected behavior Valid C code to be generated with no conflicts ### Actual behavior The following is generated: ```C #ifdef __cplusplus extern "C" #endif TVM_DLL int32_t tvmgen_default___tvm_main__(TVMValue *args, int *type_code, int num_args, TVMValue *out_value, int *out_type_code, void *resource_handle); static TVMBackendPackedCFunc _tvm_func_array[] = { (TVMBackendPackedCFunc)tvmgen_default_run, (TVMBackendPackedCFunc)tvmgen_default_fused_nn_contrib_dense_pack, (TVMBackendPackedCFunc)tvmgen_default_fused_reshape, (TVMBackendPackedCFunc)tvmgen_default_fused_reshape_add_nn_relu, (TVMBackendPackedCFunc)tvmgen_default___tvm_main__, }; static const TVMFuncRegistry _tvm_func_registry = { "\005\000tvmgen_default_run\000tvmgen_default_fused_nn_contrib_dense_" "pack\000tvmgen_default_fused_reshape\000tvmgen_default_fused_reshape_add_" "nn_relu\000tvmgen_default___tvm_main__\000", _tvm_func_array, }; static const TVMModule _tvm_system_lib = { &_tvm_func_registry, }; const TVMModule *TVMSystemLibEntryPoint(void) { return &_tvm_system_lib; } #include "tvm/runtime/c_runtime_api.h" #ifdef __cplusplus extern "C" { #endif __attribute__(( section(".rodata.tvm"), )) static const struct global_const_workspace { float fused_constant_let[10] __attribute__((aligned(16))); // 40 bytes, aligned offset: 0 float fused_constant_1_let[1] __attribute__((packed, aligned(16))); // 4 bytes, aligned offset: 48 } global_const_workspace = { .fused_constant_let = {-0x1.23b7a4p-2, 0x1.08fb6cp-2, 0x1.4128e2p-4, -0x1.03f552p-2, -0x1.09157ep-2, 0x1.8a4daep-4, -0x1.ffa53ep-3, -0x1.2849ep-3, -0x1.c1e5cp-3, -0x1.1a14aap-6}, .fused_constant_1_let = {-0x1.25dc64p-3}, }; // of total size 52 bytes __attribute__((section(".bss.noinit.tvm"), aligned(16))) static uint8_t global_workspace[68]; #include <tvmgen_default.h> TVM_DLL int32_t tvmgen_default___tvm_main__( void *onnx__MatMul_0, void *output0, uint8_t *global_const_workspace_0_var, uint8_t *global_workspace_1_var); int32_t tvmgen_default_run(struct tvmgen_default_inputs *inputs, struct tvmgen_default_outputs *outputs) { return tvmgen_default___tvm_main__(inputs->onnx__MatMul_0, outputs->output, ((uint8_t *)&global_const_workspace), ((uint8_t *)&global_workspace)); } #ifdef __cplusplus } #endif ; ``` ### Environment Any environment details, such as: Operating System, TVM version, etc OS: RHEL8 ``` $ python -m tvm.driver.tvmc --version [15:48:26] /home/dev/tvm/src/runtime/logging.cc:390: TVM_LOG_DEBUG enables VLOG statements in 'ir/transform.cc' up to level 1 [15:48:26] /home/dev/tvm/src/runtime/logging.cc:390: TVM_LOG_DEBUG enables VLOG statements in 'relay/ir/transform.cc' up to level 1 0.17.dev0 ``` ### Steps to reproduce ``` python -m tvm.driver.tvmc compile test.onnx --verbose --target='c -keys=cpu' --runtime=crt --runtime-crt-system-lib=1 --executor=aot --executor-aot-interface-api=c --executor-aot-unpacked-api=1 --pass-config tir.disable_vectorize=1 --output-format=mlf --output=model_tvm.tar ``` where test.onnx is simply a torch.Linear followed by a relu. ### Triage * backend:c -- 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. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
