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

Reply via email to