Optional native CPU contributions#
Install pipewhy[cpu] for NumPy/Numba CPU compilation; development uses
poetry sync --extras cpu. The core/reference installation needs neither dependency.
pipewhy.fingerprint.cpu.record_contributions(words, offsets, lengths, context)
accepts flat uint64 C2 record buffers and returns four digest limbs per record in
input order. Ordered mode accepts the original global start position. Validation
finishes before native entry, and missing extras or compilation failures raise errors.
fingerprint_batch accepts the same buffers and returns a counted FingerprintState
using fused native hashing/accumulation with a constant-size serial workspace.
Set partitions above one for parallel work with private partition states and a
deterministic reduction; the count is capped at the number of records. Numba’s
thread configuration controls the worker pool. cpu.merge
combines compatible partition states with native limb carries and checked counts.
Ordered partitions must be adjacent at their original offsets.
The first call includes compilation time. Inputs must stay stable during execution; unaligned word storage may be copied. Native digest parity is tested separately from Coverage.py’s Python execution measurement. Performance qualification remains in development. See blueprint/CPU_CONTRACT.txt for the boundary and remaining qualification gates.
cpu.fingerprint_batches consumes an iterator of cpu.RecordBatch values containing
the profile ID and three flat buffers. It hashes one batch before requesting the
next, preserving global ordered positions. Defaults cap each supplied batch at
65,536 records and 1,048,576 words (8 MiB); oversized batches raise an error. Producers
can configure those positive limits and yield smaller batches. A failed later batch
or source iterator stops processing without returning a successful partial result.