Use a -1
non-broadcastable constraint encoding for static shapes
#1280
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 investigates the use of a
-1
static shape value encoding to indicate that a dimension's shape value is not equal to one (per #1122).Integers
s
are used to encode static shape constraints as follows:s <= -2
: the least amount of shape information (currentlyNone
)s == -1
: the shape is not equal to one-1 < s
: the most amount of shape information (i.e. the shape is strictly equal tos
)In its current form, this PR adds a
TensorType.shape_encoded
attribute and converts the oldTensorType.shape
into a computed property that simply converts the non-exact constraints (i.e.s < 0
) toNone
.TensorType.broadcastable
(especially when used asTensorType
constructor arguments)The
broadcastable
argument to theTensorType
constructor was removed and strict non-bool
type checks were added in order to find all the places whereTrue
/False
values are being used as shape values. This means that a lot of the tests will fail until those are all fixed.Basically, this PR is also serving as an investigation into all the logic that still relies on
TensorType.broadcastable
.TensorType.broadcastable
withTensorType.shape
#1297