[ET-VK] Add supports_highdim field to OpFeatures#17337
[ET-VK] Add supports_highdim field to OpFeatures#17337meta-codesync[bot] merged 1 commit intogh/SS-JIA/415/basefrom
Conversation
Add a `supports_highdim` boolean field to `OpFeatures` in the Vulkan delegate op registry. This field indicates whether an operator implementation supports tensors with more than 4 dimensions. It defaults to `False`, meaning operators will reject high-dimensional tensors during partitioning unless explicitly opted in. The partitioner now checks all input and output tensors of an op node for >4 dimensions via the new `op_contains_high_dim_tensor` utility, and skips nodes where the operator has not declared high-dim support. Operators whose buffer-path shaders use `BufferMetadata` (which provides dynamic tensor indexing for arbitrary dimensionality) are marked with `supports_highdim=True`: binary ops, binary scalar (pow), reduce, argreduce, rotary embedding, permute_copy, view_copy, _to_dim_order_copy, squeeze_copy, unsqueeze_copy, gather, expand_copy, select_copy, slice_copy, and split_with_sizes_copy. Differential Revision: [D92740294](https://our.internmc.facebook.com/intern/diff/D92740294/) [ghstack-poisoned]
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/17337
Note: Links to docs will display an error until the docs builds have been completed. ❌ 7 New Failures, 2 Unrelated FailuresAs of commit be18a54 with merge base ba89c69 ( NEW FAILURES - The following jobs have failed:
BROKEN TRUNK - The following jobs failed but were present on the merge base:👉 Rebase onto the `viable/strict` branch to avoid these failures
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
Add a `supports_highdim` boolean field to `OpFeatures` in the Vulkan delegate op registry. This field indicates whether an operator implementation supports tensors with more than 4 dimensions. It defaults to `False`, meaning operators will reject high-dimensional tensors during partitioning unless explicitly opted in. The partitioner now checks all input and output tensors of an op node for >4 dimensions via the new `op_contains_high_dim_tensor` utility, and skips nodes where the operator has not declared high-dim support. Operators whose buffer-path shaders use `BufferMetadata` (which provides dynamic tensor indexing for arbitrary dimensionality) are marked with `supports_highdim=True`: binary ops, binary scalar (pow), reduce, argreduce, rotary embedding, permute_copy, view_copy, _to_dim_order_copy, squeeze_copy, unsqueeze_copy, gather, expand_copy, select_copy, slice_copy, and split_with_sizes_copy. Differential Revision: [D92740294](https://our.internmc.facebook.com/intern/diff/D92740294/) ghstack-source-id: 339885887 Pull Request resolved: #17337
This PR needs a
|
4e38714
into
gh/SS-JIA/415/base
Stack from ghstack (oldest at bottom):
Add a
supports_highdimboolean field toOpFeaturesin the Vulkan delegate op registry. This field indicates whether an operator implementation supports tensors with more than 4 dimensions. It defaults toFalse, meaning operators will reject high-dimensional tensors during partitioning unless explicitly opted in.The partitioner now checks all input and output tensors of an op node for >4 dimensions via the new
op_contains_high_dim_tensorutility, and skips nodes where the operator has not declared high-dim support.Operators whose buffer-path shaders use
BufferMetadata(which provides dynamic tensor indexing for arbitrary dimensionality) are marked withsupports_highdim=True: binary ops, binary scalar (pow), reduce, argreduce, rotary embedding, permute_copy, view_copy, _to_dim_order_copy, squeeze_copy, unsqueeze_copy, gather, expand_copy, select_copy, slice_copy, and split_with_sizes_copy.Differential Revision: D92740294