Skip to content

Commit 412cd4b

Browse files
sifakisclaude
andcommitted
nanovdb: drop HaloStencilAccessor design doc and cross-references
HaloStencilAccessor was a speculative alternative implementation of the Phase-2 sidecar fetch path that never had code committed. With the hybrid SIMD StencilAccessor stack also gone (commit 79004aa), the speculative halo design is no longer in scope for this branch. - Delete util/HaloStencilAccessor.md (337 lines). - WenoStencil.md (live): drop "halo-based fetch" example in §2.4 and the §8 cross-reference bullet. - StencilAccessor.md, BatchAccessor.md (already obsolete; full sweep deferred): remove only the Halo-specific bullets so nothing in the tree references HaloStencilAccessor anymore. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Efty Sifakis <esifakis@nvidia.com>
1 parent 79004aa commit 412cd4b

4 files changed

Lines changed: 5 additions & 365 deletions

File tree

nanovdb/nanovdb/util/BatchAccessor.md

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,7 +1232,7 @@ the perf numbers in this section change when it is toggled.
12321232
`LeafNode<ValueOnIndex>::getValue(offset)` in NanoVDB proper.** Rewriting
12331233
that function (perhaps ~15 lines, preserving semantics for OFF voxels via
12341234
a branchless arithmetic gate) would give every stencil-gather caller —
1235-
Legacy, hybrid, HaloStencilAccessor, any future variant — a 2–3× speedup
1235+
Legacy, hybrid, any future variant — a 2–3× speedup
12361236
on CPU. Proposed form, sketched below, keeps OFF-returns-0 semantics:
12371237
12381238
```cpp
@@ -1252,17 +1252,7 @@ the perf numbers in this section change when it is toggled.
12521252
unpredictable one. Needs benchmarking to confirm the optimiser doesn't
12531253
refold it into a conditional jump.)
12541254

1255-
3. **HaloStencilAccessor's value proposition is validated but smaller than
1256-
advertised.** Its core architectural advantage (precomputed uint64
1257-
indices per tap position, so stencil queries are unconditional indexed
1258-
loads) naturally eliminates the `isOn` branch. But a branchless
1259-
`LeafNode::getValue` would capture most of the same win without needing
1260-
the halo-buffer infrastructure. The halo still wins on absolute perf
1261-
(zero per-tap work at query time), but the delta over a branchless
1262-
leaf lookup is more like ~0.5–1 ns/voxel than the "sub-2 ns/voxel
1263-
territory" framed earlier.
1264-
1265-
4. **The hybrid `StencilAccessor`'s design rationale needs a small rewrite.**
1255+
3. **The hybrid `StencilAccessor`'s design rationale needs a small rewrite.**
12661256
The shipped hybrid design (§8i) is still the right API choice (Simd-free
12671257
public surface, compiler-portable perf) — but the justification is not
12681258
"it beats the gather chain's L1 pressure" (there is none); it is "it

nanovdb/nanovdb/util/HaloStencilAccessor.md

Lines changed: 0 additions & 337 deletions
This file was deleted.

nanovdb/nanovdb/util/StencilAccessor.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -528,13 +528,6 @@ because both pay the same dominant `isOn` mispredict cost.
528528
`NANOVDB_USE_BRANCHY_GETVALUE` to restore the old branchy form.
529529
End-to-end 1.4× on realistic narrow-band workloads, 2.8× on
530530
random-access.
531-
- **HaloStencilAccessor's value proposition is validated but narrower**:
532-
its precomputed uint64 index buffer naturally eliminates `isOn`
533-
branches by never evaluating them. Now that the branchless
534-
`getValue` captures the same win cheaply, the halo's remaining
535-
advantage is "zero per-tap work at query time" rather than "avoids
536-
the isOn mispredict storm." Worth building for the absolute-perf
537-
cases; less urgent than previously framed.
538531

539532
See `BatchAccessor.md` §8j for the original measurement matrix and
540533
correction log (§8g/§8h/§8i), and `BatchAccessor.md` §8k for the

0 commit comments

Comments
 (0)