Skip to content

Decompose Tridiagonal Solve into core steps #1382

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ricardoV94
Copy link
Member

@ricardoV94 ricardoV94 commented Apr 29, 2025

Perhaps simpler approach than #1374 to figure out the framework.

When we have a generic Solve(a, b, assume_a="tridiagonal"), there are 3 core steps we may want to reason about symbolically:

  1. Extract diagonals of a
  2. Tridiagonal LU factor
  3. Tridiagonal LU Solve

We may not want to do 1. at all, if the extracted diagonals are being allocated symbolically
We may want to cache steps 1/2 in looping constructs (as in Blockwise with broadcasted A, or Scan with non_sequence A)

However we probably don't want to start with this low-granular representation (at least with steps 2 /3 split) to avoid a messy autodiff graph.


📚 Documentation preview 📚: https://pytensor--1382.org.readthedocs.build/en/1382/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant