Skip to content

Conversation

@jlogan03
Copy link
Owner

@jlogan03 jlogan03 commented Jan 10, 2026

0.10.0 2026-01-10

Added

  • Rust
    • Add top-level interpn, interpn_alloc and interpn_serial methods along with supporting enums for selecting methods
    • Add par feature, enabled by default, that enables parallelism with rayon in interpn function

Changed

  • Rust
    • Update deps
  • Python
    • !Refactor interpn function
      • Combine check_bounds: bool and bounds_check_atol: float to check_bounds_with_atol: float | None
      • Replace assume_regular input with optional grid_kind to allow assuming either regular or rectilinear, or making no assumption
      • Add max_threads: int | None input to allow manually limiting parallelism
      • Use rust top-level interpn function as backend for method selection, bounds checks, and parallelism

@jlogan03
Copy link
Owner Author

@neutrinoceros I recall you had tried threading at the python level and didn't see any benefit. This update adds threading to the backend for the interpn convenience function, and has some heuristics that should almost-always prevent it from being slower than single-threaded.

Example case that roughly reflects a 10-megapixel image shows nearly linear speedup for all interpolant and grid kinds:
image

@jlogan03 jlogan03 merged commit adf5bdb into main Jan 10, 2026
13 checks passed
@neutrinoceros
Copy link
Contributor

Thanks for the ping ! This is pretty exciting to hear, I'll drop you a line whatever the impact I see in my applications !

@jlogan03 jlogan03 deleted the jlogan/par branch January 16, 2026 03:03
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.

3 participants