Conversation
6f69fbf to
36e9657
Compare
Merging this PR will degrade performance by 0.08%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | take_fsl_nullable_random[16, 100] |
164.3 µs | 190.3 µs | -13.67% |
| ❌ | Simulation | take_fsl_f16_random[256, 100] |
203.7 µs | 231 µs | -11.83% |
| ⚡ | Simulation | take_fsl_u32_random[256, 10] |
161.6 µs | 123.3 µs | +31.04% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing mk/allowed-serialized-ids (d0198af) with develop (133aacd)
Footnotes
-
293 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
36e9657 to
1d7f2a5
Compare
Signed-off-by: Matt Katz <mhkatz97@gmail.com>
1d7f2a5 to
d0198af
Compare
Summary
The compressor carries the writer's permitted serialized IDs and exposes them to schemes through
CompressorContext. A scheme with an optional newer wire format asks the context before producing it.DecimalSchemeuses this to split wide decimals into multi-partDecimalBytePartsarrays whenvortex.decimal_byte_parts.v2is permitted, and leaves them canonical otherwise.How it works
Scheme::produced_encodingskeeps its meaning: the serialized IDs a scheme always needs. A scheme is dropped when any of them is not permitted.CompressorContext::allows_serialized_idreports whether an optional format may be emitted. Estimate and compress receive the same context, so the decision is per array and consistent.CascadingCompressorholds the allowlist.newpermits exactly what the registered schemes declare, so optional formats are off until a writer permits them.with_allowed_serialized_idsreplaces the set and drops schemes that need anything outside it.Changes
vortex-compressor:CascadingCompressor::{with_allowed_serialized_ids, allowed_serialized_ids, has_scheme},CompressorContext::allows_serialized_id, and theproduced_encodingsdoc update.BtrBlocksCompressorBuilder::retain_allowed_encodingskeeps its name and callers. Repeated calls intersect, and it applies atbuild(), so schemes registered later are covered too. Newexclude_encodingsdenies serialized IDs regardless of the allowlist.only_cuda_compatibleuses it to deny DBP v2, so it can be called before or afterretain_allowed_encodings.DecimalSchemestays a unit struct declaring only v1. It splits viasplit_decimaland compresses the most significant part and each lower part as children, but only when the context permits v2.BtrBlocksCompressorBuilder::default()strategy writes wide decimals canonically under the default editions, so it stays writable.Tests
vortex-compressor: default allowlist, scheme filtering, and the context query seen from inside a scheme.vortex-btrblocks: builder intersection, deferred filtering,exclude_encodings, CUDA preset ordering; decimal wire-format selection with round trips.vortex: writer splits wide decimals only when a v2 edition is enabled or editions are disabled; an explicit default strategy keeps them canonical.Validation
Not run locally. The pinned nightly for
fmtis not installed here, so formatting was done by hand.