Skip to content

[BUG] Fix condition number computation and optional plotting #17

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 14 commits into
base: main
Choose a base branch
from

Conversation

Leguark
Copy link
Member

@Leguark Leguark commented Aug 5, 2025

[BUG] Fix condition number computation and optional plotting

Updated _compute_conditional_number to return the computed condition number and made plotting optional with a new plot argument. Adjusted kernel options to store condition number during numpy backend operations.

[BUG] Store condition number in kernel options during PyTorch backend operations

[CLN] Adjust import placement for conditional eigenvalue plotting

[TEST] More benchmarks

[ENH] Add GPU support for PyKeOps solver in torch backend

Introduced a use_gpu parameter to enable GPU acceleration in the pykeops_torch_cg function. Adjusted solver backend logic to toggle between CPU and GPU based on this parameter.

[ENH] Refactor and optimize PyKeOps Conjugate Gradient solver

Enhanced the ConjugateGradientSolver function with

[WIP] Trying to add preconditioners to pykeops

[CLN/WIP] Try to add preconditioners

[ENH] Introduce Adaptive Nyström Preconditioner

Replaced helper function-based preconditioning with the adaptive Nyström preconditioner in the PyKeOps solver. This includes configurable strategies for pivot selection (aggressive, conservative, minimal) and fallback handling for robust kernel matrix approximation. Removed unused diagonal and Jacobi preconditioners. Cleaned up redundant code.

[ENH] Add verbose option to Conjugate Gradient Solver

Introduced a verbose parameter to control diagnostic print statements during the iteration process.

[CLN] Removed unused funtions

[CLN] Disable unused preconditioner logic in PyKeOps solver

[CLN] Add note on GPU incompatibility for unused preconditioner logic

Add caching improvements and enhance solver stability

Introduced a clear_cache method in the WeightCache class for better memory management. Enhanced the numerical stability of the conjugate gradient solver with improved initialization and adaptive tolerances. Refactored interpolation logic to handle weights more efficiently, and adjusted benchmarking to test expanded solver configurations.

Leguark added 14 commits July 23, 2025 11:52
Updated `_compute_conditional_number` to return the computed condition number and made plotting optional with a new `plot` argument. Adjusted kernel options to store condition number during numpy backend operations.
Introduced a `use_gpu` parameter to enable GPU acceleration in the `pykeops_torch_cg` function. Adjusted solver backend logic to toggle between CPU and GPU based on this parameter.
Enhanced the `ConjugateGradientSolver` function with
Replaced helper function-based preconditioning with the adaptive Nyström preconditioner in the PyKeOps solver. This includes configurable strategies for pivot selection (`aggressive`, `conservative`, `minimal`) and fallback handling for robust kernel matrix approximation. Removed unused diagonal and Jacobi preconditioners. Cleaned up redundant code.
Introduced a `verbose` parameter to control diagnostic print statements during the iteration process.
Introduced a `clear_cache` method in the `WeightCache` class for better memory management. Enhanced the numerical stability of the conjugate gradient solver with improved initialization and adaptive tolerances. Refactored interpolation logic to handle weights more efficiently, and adjusted benchmarking to test expanded solver configurations.
Copy link
Member Author

Leguark commented Aug 5, 2025

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