You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2021/12/14 01:06:38 UTC

[GitHub] [tvm] ccjoechou commented on pull request #9730: [pre-RFC][BYOC] Marvell ML/AI Accelerator Integration

ccjoechou commented on pull request #9730:
URL: https://github.com/apache/tvm/pull/9730#issuecomment-993059437


   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
   
   
   
   
   


-- 
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: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org