Commit 2bfa08e
committed
perf: windowed numba fast path for the kernel-CDF forward transform (numpy branch)
The RectangularAdaptDensity kernel-CDF forward transform dominates the numba
CPU likelihood (euclid 1.66 s = 55% of the eval; hst 27 s = 89%): an
O(M x N) blocked erf broadcast with ~126 MB per-block temporaries, rebuilt
every evaluation. The numpy branch of F_raw now evaluates each dimension's
weighted kernel CDF with a numba kernel over sorted points + weight prefix
sums and a +-9-bandwidth saturation window — same values to ~1e-13 (dropped
tail terms < 1e-19 of the weight sum), 3.0-3.4x on the step.
The blocked numpy implementation remains the JAX branch and the
differentiable reference; the sort is internal evaluation order on the
gradient-free numpy path only, preserving the module's no-sorts
differentiability guarantee where it matters.
Validated: autolens_profiling pixelization_numba pins PASS at euclid + hst
(euclid eval 3.08 -> 1.17 s, hst ~30 -> 10.1 s on a 4-core container,
stacked with the merged #453/#455 wins); test_autoarray 1036 passed
(+2 new dense-reference equivalence tests, weighted and unweighted, with
out-of-range queries exercising the saturated tails).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vcc7MUBMnNU6n8qqS9ioVZ1 parent 1c33850 commit 2bfa08e
2 files changed
Lines changed: 109 additions & 7 deletions
File tree
- autoarray/inversion/mesh/interpolator
- test_autoarray/inversion/pixelization/interpolator
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
39 | 41 | | |
| 42 | + | |
| 43 | + | |
40 | 44 | | |
41 | 45 | | |
42 | 46 | | |
| |||
84 | 88 | | |
85 | 89 | | |
86 | 90 | | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
87 | 128 | | |
88 | 129 | | |
89 | 130 | | |
| |||
161 | 202 | | |
162 | 203 | | |
163 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
164 | 217 | | |
165 | 218 | | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
173 | 231 | | |
174 | 232 | | |
175 | 233 | | |
| |||
Lines changed: 44 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
226 | 226 | | |
227 | 227 | | |
228 | 228 | | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
0 commit comments