[Unity] Check for transpose and dynamic shape in AdjustMatmulOrder #16589
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.
When determining whether to evaluate matrix multiplications as
(A*B)*Cor asA*(B*C), dynamic shapes may occur (e.g. a dynamic LoRA rank). This commit tests for these cases, and improves the arithmetic bounds used to prove which order of evaluation is preferred.As part of the implementation, this commit also adds a utility
CollectNonNegativeExpressions, exposed to the python API asrelax.analysis.collect_non_negative_expresisons. This utility collects expressions within aStructInfowhich must be non-negative, based on the location where they appear. For example, the size of a tensor along each dimension must be non-negative. Unlike the existingdefineable_tir_vars_in_struct_info, this will include theN-2expression inR.Tensor([N-2]).