tqchen commented on issue #4280: [tvm][runtime] A minimum runtime for external 
library
URL: https://github.com/apache/incubator-tvm/pull/4280#issuecomment-551957000
 
 
   To followup on the discussion thread. While we understand that the current 
PR achieves the purpose of supporting external library by a different kind of 
wrapping, it does brings additional code that is largely duplicates with 
DSOModule.
   
   Unless there is a strong reason to do so, I think we should not introduce 
the new Extern runtime. Instead, let us document the DSOModule's calling 
convention clearly and rewrite compilers to generate functions that can be 
loaded by the DSO module. That is, instead of generating a function with the 
extern calling convention, generate a function that takes the following 
signature
   
   ```c++
   // the original foo you intended to generate
   void foo_(float* a, int N, float* b, int M, float* c) {
      bar(...);
      foobar(...);
   }
   
   // DSOModule compatible c function that can be compiled by gcc.
   extern "C" int foo(TVMValue* value, int *type_code, int nargs) {
      CHECK_EQ(nargs, 2);
      DLTensor* arg0 = static_cast<DLTensor*>(value.v_handle);
      DLTensor* arg1 = static_cast<DLTensor*>(value.v_handle);
   
      foo_(static_cast<float*>(args0->data), args0->shape[0],
              static_cast<float*>(args1->data), args1->shape[0]));
   }
   ```
   
   The main rationale behind the suggestion is that we want to avoid code 
specializations and reduce future technical debts. As we can see the current PR 
introduces special changes to several locations to support the new mode. Which 
increases the cost of maintaining the separate loading mechanism.
   
   
   

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to