-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Goal
Make the new GPU-ready many-point batch spline evaluation the single source of truth, and route existing scalar + batch entry points through it without changing behavior.
Motivation
- Reduce duplication across scalar and batch spline evaluation code paths.
- Ensure OpenACC acceleration can be used by downstream codes through a consistent interface.
- Keep the old routines as a behavioral harness (tests) to guarantee no regressions.
Prerequisite
- Fix scalar periodic wrapping inconsistency (issue Scalar periodic spline eval ignores x_min #201) so scalar and batch semantics are aligned before unification.
Proposed work
- Introduce an internal evaluation kernel (per dimension) that supports:
- single point (
npts=1) and many points - output layout
y(nq, npts)
- single point (
- Implement facades:
- existing scalar APIs call the kernel with
nq=1/appropriate layout - existing batch single-point APIs call the kernel with
npts=1 - existing many-point APIs already use the kernel
- existing scalar APIs call the kernel with
- Keep the old public routines as thin wrappers initially, but add tests that cross-check:
- old scalar vs new facade
- old batch single-point vs new facade
- old many-point vs reference
- Ensure OpenACC pass-through:
- keep resident variants that rely on
present(...) - document the downstream-managed data lifetime requirements
- keep resident variants that rely on
Acceptance
- No numerical behavior change (existing tests remain unchanged; new cross-check tests added).
- Downstream can compile+link with OpenACC and keep data resident across algorithms.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels