Hello @tqchen, @jroesch, or any other reviewer: We have also posted a pre-RFC ([11691](https://discuss.tvm.apache.org/t/pre-rfc-byoc-marvell-ml-ai-accelerator-integration/11691) with the same title for discussion along with this POC PR and code changes. Once we can get some feedback, we (Marvell) are going to request for a RFC via the other site https://github.com/apache/tvm-rfcs. As the Jenkins failure, I saw the console log of this commit's Jenkins BUILD:cpu stage and I will need some help from a reviewer.
FYI - In this pre-RFC BYOC-Marvell changes, we need to define a new dmlc.json.Write() function for the writer, which is going to be called & used by the Save() function of the newly defined GraphInputNodeMrvlExt class. This is in the src/relay/backend/contrib/mrvl/graph_executor_codegen_mrvl.cc file. However, by doing the template specialization code block at the end of the graph_executor_codegen_mrvl.cc file, it led to: - in libtvm_runtime.so: both tvm::relay::backend::GraphOpNode and tvm::relay::backend::GraphOpNode::Save(dmlc::JSONWriter*) const are undefined in libtvm_runtime.so - in libtvm_runtime.so: corresponding GraphOpNodeMrvlExt is defined - but in libtvm.so: all of the above are defined We can see the above from nm and c++filter commands below... tvm$ nm build/libtvm_runtime.so | grep GraphOpNode 00000000001cf510 W _ZN3tvm5relay7backend11GraphOpNodeD0Ev 00000000001cf480 W _ZN3tvm5relay7backend11GraphOpNodeD1Ev 00000000001cf480 W _ZN3tvm5relay7backend11GraphOpNodeD2Ev 00000000001c87e0 T _ZN3tvm5relay7backend18GraphOpNodeMrvlExt19GetLoadedGraphAttrsB5cxx11Ev 00000000001c9500 T _ZN3tvm5relay7backend18GraphOpNodeMrvlExt4LoadEPN4dmlc10JSONReaderE 00000000001c88b0 T _ZN3tvm5relay7backend18GraphOpNodeMrvlExt9LoadAttrsEPN4dmlc10JSONReaderE 00000000001d2730 W _ZN3tvm5relay7backend18GraphOpNodeMrvlExtC1ERKS2_ 00000000001d2730 W _ZN3tvm5relay7backend18GraphOpNodeMrvlExtC2ERKS2_ 00000000001cf5a0 W _ZN3tvm5relay7backend18GraphOpNodeMrvlExtD0Ev 00000000001cf670 W _ZN3tvm5relay7backend18GraphOpNodeMrvlExtD1Ev 00000000001cf670 W _ZN3tvm5relay7backend18GraphOpNodeMrvlExtD2Ev U _ZNK3tvm5relay7backend11GraphOpNode4SaveEPN4dmlc10JSONWriterE 00000000001cd1b0 W _ZNK3tvm5relay7backend18GraphOpNodeMrvlExt4TypeEv 00000000001d2aa0 W _ZNSt6vectorIN3tvm5relay7backend18GraphOpNodeMrvlExtESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_ 00000000001cf310 W _ZNSt6vectorIN3tvm5relay7backend18GraphOpNodeMrvlExtESaIS3_EED1Ev 00000000001cf310 W _ZNSt6vectorIN3tvm5relay7backend18GraphOpNodeMrvlExtESaIS3_EED2Ev U _ZTIN3tvm5relay7backend11GraphOpNodeE 00000000007c2ef8 V _ZTIN3tvm5relay7backend18GraphOpNodeMrvlExtE 0000000000529340 V _ZTSN3tvm5relay7backend18GraphOpNodeMrvlExtE U _ZTVN3tvm5relay7backend11GraphOpNodeE 00000000007c30a8 V _ZTVN3tvm5relay7backend18GraphOpNodeMrvlExtE tvm$ c++filt _ZNK3tvm5relay7backend11GraphOpNode4SaveEPN4dmlc10JSONWriterE tvm::relay::backend::GraphOpNode::Save(dmlc::JSONWriter*) const tvm$ c++filt _ZTIN3tvm5relay7backend11GraphOpNodeE typeinfo for tvm::relay::backend::GraphOpNode But in the libtvm.so file, they are defined... tvm$ nm build/libtvm.so | grep GraphOpNodeE 00000000016782c0 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv 0000000001678190 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv 0000000001678320 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info 00000000016781d0 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED0Ev 0000000001678180 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED1Ev 0000000001678180 W _ZNSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EED2Ev 000000000247c9e8 V _ZTIN3tvm5relay7backend11GraphOpNodeE 000000000247cc10 V _ZTISt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE 0000000001db58a0 V _ZTSN3tvm5relay7backend11GraphOpNodeE 0000000001db67e0 V _ZTSSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE 000000000247ccc8 V _ZTVN3tvm5relay7backend11GraphOpNodeE 000000000247ced0 V _ZTVSt23_Sp_counted_ptr_inplaceIN3tvm5relay7backend11GraphOpNodeESaIS3_ELN9__gnu_cxx12_Lock_policyE2EE Thus, the tests/python/unittest/test_runtime_module_load.py::test_dso_module_load runtime test failed during the Jenkins BUILD:cpu stage. I wonder whether we (Marvell) are missing a runtime registration somewhere? Thanks, - Joe -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/apache/tvm/pull/9730#issuecomment-993059437