stoa commented on pull request #7742:
URL: https://github.com/apache/tvm/pull/7742#issuecomment-855391490


   @areusch @tqchen 
   
   Hello,
   Let then sort out the review feedback in the order of importance:
   
   > I'd like to avoid merging an alternative implementation of 
crt_backend_api.c if possible. Could we merge the other PR first and then use 
it? I'd like to avoid replacing layers below TVM's operator libraries where 
possible.
   
   I can propose the following:
   
   - Do we agree on the following "software stack" ?:
   
                    inference_application[c,so]
                                        |
                         c_backend_api.[h,c]
                         |                            |
      c_runtime_api[h,c'                   |
        TVM RUNTIME                   AOT
                         |                            |
                       platform-specific[h,c]
                                
   
   - Do we agree that, in the AOT path, we do not want to include/compile the 
c_runtime_api.[h,c] ?
   - Do we agree that the 'g_last_error' (TVMGetSetLastError()) is set by the 
running inference application and not by the lower runtime layers: 
c_runtime_api|platform_specific ?
   
   In this case, I can move the 'g_last_error' (TVMGetSetLastError()) from the 
c_runtime_api[h,c] to the 'c_backend_api.[h,c]' and remove the duplicate 
'g_last_error' functionality from the platform-specific implementation, 
'runtime.c'.
   The 'TVMAPIErrorf()' from the 'c_runtime_api.c' will have to be changed not 
to use the 'g_last_error', I have an impression that it is already pretty much 
the case. 
   
   > Platform-specific defines in 'ai_platform.h': I need to verify and will 
get back on this point quickly.
   
   I am noticing that some of similar defines exist in 'c_runtime_api.h' and 
this is used pretty extensively throughout the TVM.
   However, if we agree that the 'c_runtime-api[h,c]' is not to be used within 
the AOT path, we cannot use it.
   I can propose to create some sort of 'c_runtime_defs.h' that would include 
platform-specific defines for:
   - AI_API_ENTRY  = TVM_DLL
   - AI_API_ALIGNED
   - AI_API_WEAK = TVM_WEAK
   - etc.
   The platform-specific implementation can include this file then instead of 
the 'c_runtime_api.h'.
   Still the question of testing all different defines remain - but this is 
already the case with the 'c_runtime_api.h'.
   
   > i think there are still some open items on the C code (e.g. the 
.clang-format should get removed and reformatted; may need to see if files in 
src/runtime/contrib/stm32 should be somehow placed under src/runtime/crt, 
src/runtime/micro, or src/micro, since they aren't intended to be compiled with 
the C++ runtime), but not sure if you're waiting to address the ai_platform.h 
question there.
   
   Moving to a different code location is not an issue, please let us know 
which directory is most suitable.
   And I also see that there is no reason for us to not reformat the C code - 
OK.
   
   > I guess my concern with keeping the headers in place is that TVM code is 
supposed to be fairly uniform in style.
   
   I will remove the headers.
   
   > 'test_mnist_quant_fp': just wondering if the delete here was intentional?
   
   Yes, intentional. We do not have a possibility to host these test-cases for 
downloading and they cannot be dowloaded from elsewhere.
   
   Resuming: If we agree on re-organizing the 'c_runtime-api' as outlined 
above, I will align this PR and we will not need a separate PR in this case.
   
   


-- 
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


Reply via email to