lhutton1 opened a new pull request #10143:
URL: https://github.com/apache/tvm/pull/10143


   Fixes the layout optimizer incorrectly assigning layouts for graphs with 
more complex topologies than previously considered. Specifically, this commit 
now ensures that intermediate layouts match (e.g. parent output = child input) 
and that all consumers are taken into account when altering the output layout - 
something not done previously due to an incorrect traversal order.
   
   Previously, the input layout was always altered if the producer was an NPU 
operation without regard to the output layout of that operation. Additionally, 
is was possible for the output layout to be incorrectly set due to a 
depth-first post-order of traversal of the graph, meaning it was possible for 
not all consumers to be taken into account when altering the layout.
   
   Now the `AnalyzeConsumers` pass is run before `LayoutOptimization` which 
determines a mapping from NPU operation to list of boolean values that 
represent whether or not each consumer is an NPU operation. Since this is 
completed before `LayoutOptimization`, all consumers are guaranteed to be taken 
into account when altering the output layout. In turn, the input layouts can 
correctly be determined by checking whether the output of the producer will be 
altered.
   
   cc @mbaret @manupa-arm @ekalda @jacobbohlin @dchauhan-arm @NicolaLancellotti 
   


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