Implement Fusion definition equality check #5454
                
     Draft
            
            
          
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
This PR creates a check to determine if two separate
Fusionobjects have the same definition. This check is unlike existing equality IR checks the enforce that the object must be exactly the same. This second part of creating anLRU Cachefor direct bindings.sameDefinitiondetailsVal::sameDefinitionchecks the Val's definition.Expr::sameDefinitionchecks the Expr's input arguments.Fusion::sameDefinitionstarts from each output and traverses the entire Fusion DAG. Unlike the legacyTensorRecordcheck,TensorView::sameDefinitiondirectly compares the logical and allocation domain, which handles non-trival operations likepreprocessGroupedMatmulInputSf.Differences between
Val::sameAsandVal::sameDefinitionVal::sameValcontains common code forVal::sameAsandVal::sameDefinitionsameAsdetermines if a Statement has the exact same result as the other value.sameAs, two values without definition nor value are not equal. This is used in concretization.In addition, if either Val has a non-deterministic definition, then the Vals are not the same.
sameDefinitiondetermines if a two values will create the same fusion definition.nameis checked to ensure argument order.Differences between
Expr::sameAsandExpr::sameDefinitionExpr::sameDefinitionskips theisDeterministic.PR Stack