Proposal: non-allocating single-point evaluation (funeval fast path)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- julia
- Ambito
- performance
Direzione di ricerca
Esamina l’implementazione proposta in src/point_eval.jl di ContinuousDPs.jl e il relativo test/test_point_eval.jl, quindi confronta la sua API con le convenzioni di BasisMatrices e con l’issue correlata #60. Il lavoro è considerato completato quando si è raggiunto un accordo sull’API e sulla direzione progettuale prima di prendere in considerazione un PR; i test indicati definiscono le aspettative relative a precisione, valori fuori dominio, dimensioni miste e allocazioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
(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)
- Lingua principale
- Julia
- Stelle
- 33
- Fork
- 20
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di QuantEcon/BasisMatrices.jl
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
SplineSparse documentationAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
QuantEcon/BasisMatrices.jl#55 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
QuantEcon/BasisMatrices.jl#49 · 3 commenti ·
-
Segfault with 0-degree polynomials and autodiffForse già presa @isutoris l’ha presa 3194 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
QuantEcon/BasisMatrices.jl#47 · 3 commenti ·
Tutte le issue di QuantEcon/BasisMatrices.jl
Issue simili
-
documentation priority: high
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
TuringLang/Turing.jl#2917 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 2 giorni
-
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
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
Huerte/algo-solutions-python#226 ·
I maintainer di solito rispondono entro 1 giorno