Liangxijun-1001 opened a new pull request, #16178:
URL: https://github.com/apache/tvm/pull/16178

   I debugged the MIOpen source code for a specific reason. During the model 
compilation phase, the Python side calls the conv2d.setup interface, invoking 
MIOpen's findConvForwardAlgorithm interface to find the appropriate algorithm. 
Subsequently, the corresponding <layer-Problem, Algorithm> pair is registered 
within the current invokers. Then, without terminating the current process, 
during the inference stage, the invoker can identify the Algorithm for the 
corresponding layer-problem and perform direct inference.
   
   However, if the current process is exited and the pre-compiled model is 
executed without the prior invocation of findConvForwardAlgorithm during the 
compilation phase, the corresponding <layer-Problem, Algorithm> pair won't be 
registered within the invokers. As a result, the inference stage will report an 
error stating "MIOpen Error: No invoker was registered for convolution forward."
   
   Based on the distinction between MIOpen and cuDNN invocation provided by the 
MIOpen official documentation, the typical sequence for calling Convolution 
APIs in MIOpen is as follows:
   
   miopenConvolution*GetWorkSpaceSize(): This function returns the workspace 
size required by the Find() operation.
   
   miopenFindConvolution*Algorithm(): This function returns performance 
information about various algorithms.
   
   miopenConvolution*(): Actual convolution operation.
   
   The official documentation emphasizes that calling 
miopenFindConvolution*Algorithm() is mandatory before using any Convolution API.
   
   Additionally, according to the documentation found at 
https://rocm.docs.amd.com/projects/MIOpen/en/latest/convolution.html#miopenfindconvolutionforwardalgorithm,
 the last parameter of the miopenFindConvolutionForwardAlgorithm interface, 
exhaustiveSearch, should be set to 1 (true):
   
   If exhaustiveSearch == 0, MIOpen will seek the first kernel with a 
configuration match. If no configuration match is found, a default 
configuration will be returned.
   
   If exhaustiveSearch == 1, MIOpen will search for the best kernel for the 
provided configuration. If a match is not found, an exhaustive search is 
performed by running individual algorithms.
   
   For further details refer to this link: 
https://rocmdocs.amd.com/projects/MIOpen/en/latest/MIOpen_Porting_Guide.html


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to