Proposal: non-allocating single-point evaluation (funeval fast path)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Tranquilo
- Stack tecnológico
- julia
- Área
- performance
Línea de trabajo
Revisa la implementación propuesta en src/point_eval.jl de ContinuousDPs.jl y el test/test_point_eval.jl correspondiente, y luego compara su API con las convenciones de BasisMatrices y el issue relacionado #60. La tarea se considera terminada cuando se haya acordado la API y la dirección del diseño antes de considerar un PR; los tests referenciados definen las expectativas de precisión, valores fuera de dominio, dimensiones mixtas y asignaciones.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
(Text generated by Claude Fable 5)
Problem
funeval has no fast path for a single point: the scalar method wraps the point in a matrix and constructs a full BasisMatrix. For code that evaluates an interpolant point-wise inside a loop (optimizers, solvers, simulations), this dominates runtime and allocations.
Proposal
Add non-allocating single-point evaluation. A working implementation exists in QuantEcon/ContinuousDPs.jl — see src/point_eval.jl (short and largely self-explanatory) and QuantEcon/ContinuousDPs.jl#94, which collects the full details (API sketch, benchmark numbers, design decisions on record, planned extensions such as derivative orders and an Interpoland fast path). In brief:
- API:
PointEvalCache(p::BasisParams)per-dimension caches with specialized kernels forChebParams,SplineParams, andLinParams;FunEvalCache(basis::Basis{N})andfuneval_point!(cache, c, x) -> Float64for N-dimensional tensor-product evaluation. - Agrees with
funevalto machine precision, including for points outside the interpolation domain. - Impact downstream: cut the memory footprint of a value function iteration from 700 MiB to 434 KiB (5.8M to 5.4K allocations) and halved wall-clock time (QuantEcon/ContinuousDPs.jl#93).
- The implementation is self-contained, written against BasisMatrices conventions with no DP-specific types, so it can move here mostly as-is.
- Tests:
test/test_point_eval.jl— 260 agreement cases across basis families, mixed 2-D/3-D tensor bases, and out-of-domain points, plus zero-allocation assertions; they would transplant as-is. - Related: #60 requests in-place batch updates at a fixed set of nodes; this proposal covers the complementary point-wise case where the points change every call. A design accommodating both may be worth considering.
Ask
Before opening a PR here, we would like feedback on whether this is welcome and on the API naming/shape.
🤖 Drafted with Claude Code (Claude Fable 5)
- Lenguaje dominante
- Julia
- Estrellas
- 33
- Forks
- 20
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de QuantEcon/BasisMatrices.jl
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
SplineSparse documentationAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
QuantEcon/BasisMatrices.jl#55 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
QuantEcon/BasisMatrices.jl#49 · 3 comentarios ·
-
Segfault with 0-degree polynomials and autodiffPosiblemente ocupada @isutoris la tomó hace 3194 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
QuantEcon/BasisMatrices.jl#47 · 3 comentarios ·
Todos los issues de QuantEcon/BasisMatrices.jl
Issues similares
-
documentation priority: high
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
TuringLang/Turing.jl#2917 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
Validate UserDemand return_factorPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 2 días
-
30-minutes algorithm any-language codewars dart easy elixir hackerrank hacktoberfest haskell help wanted interview-prep julia leetcode lua open-source r scala students zig
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Huerte/algo-solutions-python#226 ·
Los mantenedores suelen responder en 1 día