pymc-devs / pymc-devs/pytensor
Rethink the special-case for Elemwise/Blockwise InplaceOptimizer for "large graphs"
Open
Nobody has claimed this yet.
graph rewriting
memory opt
- Dominant language
- Python
- Stars
- 644
- Forks
- 208
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 16
Description
Description
As brought up in #1494 it's odd to have a hard-coded 500 number at which we stop trying to inplace scalar graphs. We could consider:
- Remove this behavior and address underlying performance issues (if we can reproduce)
- Make it a config variable
- Make it more cleaver, not just scalar, but perhaps variable.size if that's statically known as well
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
Start by locating the Elemwise/Blockwise InplaceOptimizer implementation and reviewing issue #1494 to understand the hard-coded 500 threshold and the reported large-graph behavior. Reproduce the performance concern if possible, then define and validate one of the proposed policies with tests or benchmarks showing the new behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100