Add support for SymInt start values in slice_scatter_decomposition#4185
Add support for SymInt start values in slice_scatter_decomposition#4185shahe-nv wants to merge 1 commit intopytorch:mainfrom
Conversation
|
Hi @shahe-nv! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
| elif isinstance(start, torch.SymInt): | ||
| if start < 0: | ||
| start = start + dim_size | ||
| if end is None: # Ensure end is int |
There was a problem hiding this comment.
Hi can you have a testcase for the above?
There was a problem hiding this comment.
Hi, I tested with my ZoomASR code. Without this, it will crash. After adding this it will run.
There was a problem hiding this comment.
Thanks for the info! Generally for any change in the codebase, we recommend adding a corresponding test case to capture the corner case for future CI runs.
There was a problem hiding this comment.
Hi, do you know where I need to add the test? Do you have examples?
| if start is None: | ||
| start = 0 | ||
| elif isinstance(start, int): | ||
| start = get_positive_dim(start, dim_size) | ||
| elif isinstance(start, torch.SymInt): | ||
| if start < 0: | ||
| start = start + dim_size |
There was a problem hiding this comment.
According to the aten schema, all of start, end, and step could be SymInt, not just start. Can you fix all of them btw? I think a more general way is to support SymInt in get_positive_dim() like:
def get_positive_dim(
dim: Union[int, SymInt, Sequence[int], Sequence[SymInt]], dim_size: int
):
| start: Optional[int] = None, | ||
| end: Optional[int] = None, | ||
| step: Optional[int] = None, |
There was a problem hiding this comment.
the types should be changed accordingly, and step=1 by default according to the schema
| elif isinstance(start, torch.SymInt): | ||
| if start < 0: | ||
| start = start + dim_size | ||
| if end is None: # Ensure end is int |
| if step is None: | ||
| step = 1 |
There was a problem hiding this comment.
not needed if step=1 by default
| step = 1 | ||
|
|
||
| # step == 0 is not a valid torch case | ||
| if start == 0 and end == dim_size and step == 1: |
There was a problem hiding this comment.
what if they are symint?
| # Ensure start, end, and step are all integers | ||
| assert isinstance(start, (int, torch.SymInt)), "start must be an int or SymInt" | ||
| assert isinstance(end, (int, torch.SymInt)), "end must be an int or SymInt" | ||
| assert isinstance(step, (int, torch.SymInt)), "step must be an int or SymInt" |
There was a problem hiding this comment.
shouldn't they be put in the front of the function?
Description
Add support for SymInt start values in slice_scatter_decomposition.
This fixes a crash issue when I run with ZoomASR.
Fixes # (issue): None
Type of change
Checklist: