pymc-devs / pymc-devs/pytensor
Extend `local_useless_slice` to IncSubtensor and AdvancedIncSubetensor Ops
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 644
- Forks
- 208
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 16
Description
Description
The rewrite local_useless_slice canonicalizes slicing operations so that x[0:-1:2] and x[::2] are made equivalent.
This should also apply to IncSubtensor operations with slices where x[0:-1:2].set(y) and x[::2].set(y) are made equivalent. The only difference is the branch where we find zero indices and just return x, in that case for the IncSubtensor, we should return full_like(x, y)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read pytensor/tensor/rewriting/subtensor.py around the linked local_useless_slice implementation, then trace how IncSubtensor and AdvancedIncSubtensor operations represent sliced updates. Extend the equivalence for the specified slice forms, including the zero-index branch returning full_like(x, y), and verify that the corresponding rewrite behavior is correct.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 50/100